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

创建文档

本节讨论使用 dom4j API 创建 XML 文档的过程,并创建示例 XML 文档 catalog.xml。

使用 import 语句导入 dom4j API 类:

1. import org.dom4j.Document;  
2. import org.dom4j.DocumentHelper;  
3. import org.dom4j.Element;

使用 DocumentHelper 类创建一个文档实例。 DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。

  

1. Document document = DocumentHelper.createDocument();


使用 addElement() 方法创建根元素 catalog 。 addElement() 用于向 XML 文档中增加元素。

  


1. Element catalogElement = document.addElement("catalog");

 catalog 元素中使用 addComment() 方法添加注释“An XML catalog”。

  

1. catalogElement.addComment("An XML catalog");

 catalog 元素中使用 addProcessingInstruction() 方法增加一个处理指令。

  

1. catalogElement.addProcessingInstruction("target","text");

 catalog 元素中使用 addElement() 方法增加 journal 元素。

  

1. Element journalElement =  catalogElement.addElement("journal");

 

使用 addAttribute() 方法向 journal 元素添加 title 和 publisher 属性。

 


  

1. journalElement.addAttribute("title", "XML Zone");  
2. journalElement.addAttribute("publisher", "IBM developerWorks");


  

向 article 元素中添加 journal 元素。

  

1. Element articleElement=journalElement.addElement("article");

 article 元素增加 level 和 date 属性。

  

1. articleElement.addAttribute("level", "Intermediate");  
2. articleElement.addAttribute("date", "December-2001");


 

 article 元素中增加 title 元素。

  

1. Element titleElement=articleElement.addElement("title");

 

 setText() 方法设置 article 元素的文本。

  

1. titleElement.setText("Java configuration with XML Schema");


 

在 article 元素中增加 author 元素。

  

1. Element authorElement=articleElement.addElement("author");

 

在 author 元素中增加 firstname 元素并设置该元素的文本。

1. Element  firstNameElement=authorElement.addElement("firstname");  
2. firstNameElement.setText("Marcello");

 

在 author 元素中增加 lastname 元素并设置该元素的文本。

  


使用 dom4j 解析 XML_API

1. Element lastNameElement=authorElement.addElement("lastname");  
2. lastNameElement.setText("Vitaletti");


 

 addDocType() 方法添加文档类型说明。

1. document.addDocType("catalog", null,"file://c:/Dtds/catalog.dtd");

 

 这样就向 XML 文档中增加文档类型说明:


1. <!DOCTYPE catalog SYSTEM "file://c:/Dtds/catalog.dtd">

 

如果文档要使用文档类型定义(DTD)文档验证则必须有 Doctype。

XML 声明 <?xml version="1.0" encoding="UTF-8"?> 自动添加到 XML 文档中。

 

清单 3 所示的例子程序 XmlDom4J.java 用于创建 XML 文档 catalog.xml。


  

1. import org.dom4j.Document;  
2. import org.dom4j.DocumentHelper;  
3. import org.dom4j.Element;  
4. import org.dom4j.io.XMLWriter;  
5. import java.io.*;  
6. public class XmlDom4J{  
7. public void generateDocument(){  
8. Document document = DocumentHelper.createDocument();  
9. "catalog");  
10. "An XML Catalog");  
11. "target","text");  
12. "journal");  
13. "title", "XML Zone");  
14. "publisher", "IBM developerWorks");  
15. "article");  
16. "level", "Intermediate");  
17. "date", "December-2001");  
18. "title");  
19. "Java configuration with XML Schema");  
20. "author");  
21. "firstname");  
22. "Marcello");  
23. "lastname");  
24. "Vitaletti");  
25. "catalog",  
26. null,"file://c:/Dtds/catalog.dtd");  
27. try{  
28. new XMLWriter(  
29. new FileWriter( new File("c:/catalog/catalog.xml") ));  
30.         output.write( document );  
31.         output.close();  
32.         }  
33. catch(IOException e){System.out.println(e.getMessage());}  
34. }  
35. public static void main(String[] argv){  
36. XmlDom4J dom4j=new XmlDom4J();  
37. dom4j.generateDocument();  
38. }}


 

这一节讨论了创建 XML 文档的过程,下一节将介绍使用 dom4j API 修改这里创建的 XML 文档。


修改文档

这一节说明如何使用 dom4j API 修改示例 XML 文档 catalog.xml。

使用 SAXReader 解析 XML 文档 catalog.xml:

 

SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputXml);

SAXReader 包含在 org.dom4j.io 包中。inputXml 是从 c:/catalog/catalog.xml 创建的 java.io.File。使用 XPath 表达式从 article 元素中获得 level 节点列表。如果 level 属性值是“Intermediate”则改为“Introductory”。