DOM4J生成、解析XML實例
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;/**
- dom4j生成與解析XML文檔
*/
public classDom4jDemo {/**
利用dom4j進行xml文檔的寫入操作 */
public void createXml(File file) {// XML 聲明 <?xmlversion="1.0" encoding="UTF-8"?> 自動添加到 XML文檔中
// 使用DocumentHelper類創建文檔實例(生成 XML文檔節點的 dom4jAPI工廠類)
Document document =DocumentHelper.createDocument();// 使用addElement()方法創建根元素employees(用于向 XML 文檔中增加元素)
Element root =document.addElement("employees");// 在根元素中使用 addComment()方法添加注釋"AnXML Note"
root.addComment("An XMLNote");// 在根元素中使用addProcessingInstruction()方法增加一個處理指令
root.addProcessingInstruction("target","text");// 在根元素中使用 addElement()方法增加employee元素。
Element empElem =root.addElement("employee");// 使用 addAttribute()方法向employee元素添加id和name屬性
empElem.addAttribute("id","0001");
empElem.addAttribute("name","wanglp");// 向employee元素中添加sex元素
Element sexElem =empElem.addElement("sex");
// 使用setText()方法設置sex元素的文本
sexElem.setText("m");// 在employee元素中增加age元素 并設置該元素的文本。
Element ageElem =empElem.addElement("age");
ageElem.setText("25");// 在根元素中使用 addElement()方法增加employee元素。
Element emp2Elem =root.addElement("employee");// 使用 addAttribute()方法向employee元素添加id和name屬性
emp2Elem.addAttribute("id","0002");
emp2Elem.addAttribute("name","fox");// 向employee元素中添加sex元素
Element sex2Elem =emp2Elem.addElement("sex");
// 使用setText()方法設置sex元素的文本
sex2Elem.setText("f");// 在employee元素中增加age元素 并設置該元素的文本。
Element age2Elem =emp2Elem.addElement("age");
age2Elem.setText("24");// 可以使用 addDocType()方法添加文檔類型說明。
//document.addDocType("employees", null,"file://E:/Dtds/dom4j.dtd");
// 這樣就向 XML 文檔中增加文檔類型說明:
// <!DOCTYPE employees SYSTEM"file://E:/Dtds/dom4j.dtd">
// 如果文檔要使用文檔類型定義(DTD)文檔驗證則必須有Doctype。try {
XMLWriter output = newXMLWriter(new FileWriter(file)); output.write(document); output.close();
} catch (IOException e) {
System.out.println(e.getMessage());
}
}/**
利用dom4j進行xml文檔的讀取操作 */
public void parserXml(File file) {Document document = null;
// 使用 SAXReader 解析 XML 文檔catalog.xml:
SAXReader saxReader = new SAXReader();try {
document = saxReader.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
// 將字符串轉為XML
// document = DocumentHelper.parseText(fileString);// 獲取根節點
Element root =document.getRootElement();
// 打印節點名稱
System.out.println("<" +root.getName() + ">");// 獲取根節點下的子節點遍歷
Iterator<?> iter =root.elementIterator("employee");
// 遍歷employee節點
while (iter.hasNext()) {// 獲取當前子節點 Element empEle = (Element)iter.next(); System.out.println("<"+ empEle.getName() + ">"); // 獲取當前子節點的屬性遍歷 Iterator<?> attrList = empEle.attributeIterator(); while (attrList.hasNext()) { Attribute attr = (Attribute)attrList.next(); System.out.println(attr.getName() + "=" + attr.getValue()); } // 遍歷employee節點下所有子節點 Iterator<?> eleIte =empEle.elementIterator(); while (eleIte.hasNext()) { Element ele = (Element)eleIte.next(); System.out.println("<" + ele.getName() + ">" +ele.getTextTrim()); } // 獲取employee節點下的子節點sex值 // String sex =empEle.elementTextTrim("sex"); //System.out.println("sex:" + sex);
}
System.out.println("</" +root.getName() + ">");
} </pre>
public static void main(String[] args) {
Dom4jDemo dom4j = new Dom4jDemo(); File file = newFile("e:/dom4j.xml"); // dom4j.createXml(file); dom4j.parserXml(file);
}
} </pre>