Jdom:高效的XML处理Java API

本文介绍如何利用Java的JDOM库构建XML文档,并通过XSLT进行样式转换,展示了一个具体的示例代码及转换效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方主页:http://www.jdom.org/

如下图所示建立工程:

所使用的jar包一览如下:

saxpath.jar
jaxen-jdom.jar
jaxen-core.jar
xalan.jar
jdom.jar

 

代码如下:

JdomTest.java

  1. package demo;
  2. import java.io.FileInputStream;
  3. import javax.xml.transform.Transformer;
  4. import javax.xml.transform.TransformerFactory;
  5. import javax.xml.transform.stream.StreamResult;
  6. import javax.xml.transform.stream.StreamSource;
  7. import org.jdom.Attribute;
  8. import org.jdom.Comment;
  9. import org.jdom.Document;
  10. import org.jdom.Element;
  11. import org.jdom.output.Format;
  12. import org.jdom.output.XMLOutputter;
  13. public class JdomTest {
  14.     public static void main(String[] args) throws Exception {
  15.         
  16.         Element carElement = new Element("car");
  17.         Document myDocument = new Document(carElement);
  18.         carElement.setAttribute(new Attribute("vin""123fhg5869705iop90"));
  19.         carElement.addContent(new Element("make").addContent("Toyota"));
  20.         carElement.addContent(new Element("model").addContent("Celica"));
  21.         carElement.addContent(new Element("year").addContent("1997"));
  22.         carElement.addContent(new Element("color").addContent("green"));
  23.         carElement.addContent(new Element("license").addContent("1ABC234").setAttribute("state""CA"));
  24.         carElement.addContent(new Comment("Description of a car"));
  25.         
  26.         //Element yearElement = carElement.getChild("year");
  27.         //System.out.println(yearElement.getText());
  28.         //boolean removed = carElement.removeChild("year");
  29.         //System.out.println(removed);
  30.         
  31.         try {
  32.             Format format = Format.getPrettyFormat();
  33.             XMLOutputter outputter = new XMLOutputter(format);
  34.             outputter.output(myDocument, System.out);
  35.         } catch (java.io.IOException e) {
  36.             e.printStackTrace();
  37.         }
  38.         
  39.         System.out.println("===============================================");
  40.         
  41.         TransformerFactory tFactory = TransformerFactory.newInstance();
  42.         org.jdom.output.DOMOutputter outputter = new org.jdom.output.DOMOutputter();
  43.         org.w3c.dom.Document domDocument = outputter.output(myDocument);
  44.         javax.xml.transform.Source xmlSource = new javax.xml.transform.dom.DOMSource(domDocument);
  45.         StreamSource xsltSource =  new StreamSource(new FileInputStream("car.xsl"));
  46.         StreamResult xmlResult = new StreamResult(System.out);
  47.         Transformer transformer = tFactory.newTransformer(xsltSource);
  48.         transformer.transform(xmlSource, xmlResult);
  49.     }
  50. }

car.xsl

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3.   <xsl:template match="/car">
  4.     <html>
  5.         <head>
  6.           <title><xsl:value-of select="make"/> <xsl:value-of select="model"/></title>
  7.         </head>
  8.         <body>
  9.           <h1><xsl:value-of select="make"/></h1><br />
  10.           <h2><xsl:value-of select="model"/></h2><br />
  11.           <table border="0">
  12.           <tr><td>VIN:</td><td><xsl:value-of select="@vin"/></td></tr>
  13.           <tr><td>Year:</td><td><xsl:value-of select="year"/></td></tr>
  14.           <tr><td>Color:</td><td><xsl:value-of select="color"/></td></tr>
  15.           </table>
  16.         </body>
  17.     </html>
  18.   </xsl:template>
  19. </xsl:stylesheet>

输出:

<?xml version="1.0" encoding="UTF-8"?>
<car vin="123fhg5869705iop90">
  <make>Toyota</make>
  <model>Celica</model>
  <year>1997</year>
  <color>green</color>
  <license state="CA">1ABC234</license>
  <!--Description of a car-->
</car>

=========================================================
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ToyotaCelica</title>
</head>
<body>
<h1>Toyota</h1>
<br>
<h2>Celica</h2>
<br>
<table border="0">
<tr>
<td>VIN:</td><td>123fhg5869705iop90</td>
</tr>
<tr>
<td>Year:</td><td>1997</td>
</tr>
<tr>
<td>Color:</td><td>green</td>
</tr>
</table>
</body>
</html>

 

更多信息请参考:

http://www.ibm.com/developerworks/cn/java/j-jdom/

http://www.ibm.com/developerworks/cn/xml/x-jdom/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值