Dom4j jar包地址:https://pan.baidu.com/s/1eNExExlFHIecfW_6YkXpvw 提取碼:w5om
首先解壓Dom4j jar包,解壓后如下
然后把 dom4j-1.6.1.jar 復制放到工程目錄下(集成開發工具是myeclipse)
在myeclipse工程下直接右鍵dom4j-1.6.1.jar,點擊Build Path → Add to Build Path
myeclipse自動導入jar包,然后就可以使用jar包提供的接口了。
我們創建一個book.xml文件放到src目錄下
book.xml文件內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<書架>
<書 >
<書名>時間簡史</書名>
<作者>霍金</作者>
<售價>60</售價>
</書>
<書>
<書名>廣義相對論</書名>
<作者>愛因斯坦</作者>
<售價>65</售價>
</書>
</書架>
Dom4j_parseXML.java編寫解析代碼
需要導入的包:
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
注意:除了FileOutputStream和List不是dom4j包的,其他的都是
創建解析器
//創建dom4j解析器
SAXReader reader = new SAXReader();
//加載document對象
Document document = reader.read("src/book.xml");
得到某個節點的內容
//拿到根節點
Element root = document.getRootElement();
//拿到所有的書節點
List<Element> list = root.elements("書");
//拿到第二本書
Element bookE1 = list.get(1);
//獲取售價文本
System.out.println(bookE1.elementText("售價"));
遍歷所有元素節點
public static void ergodic(Document document) {
treeWalk( document.getRootElement() );
}
public static void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
System.out.println(node.getName());
treeWalk( (Element) node );
}
}
}
修改某個元素節點的主體內容
//獲取根節點
Element root = document.getRootElement();
//拿到第二種書節點
Element bookEL = (Element) root.elements("書").get(1);
//拿到售價節點
Element priceE1 = bookEL.element("售價");
//改變主體內容
priceE1.setText("55");
//將結果保存到硬盤上
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
向指定元素節點中添加子元素節點
//獲取根節點
Element root = document.getRootElement();
//拿到第一種書節點
Element bookEL = (Element) root.elements("書").get(0);
//拿到售價節點
Element priceE1 = bookEL.element("售價");
//添加子節點
priceE1.addElement("內部價").setText("50");
//將結果保存到硬盤上
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
向指定元素節點上增加同級元素節點
//獲取根節點
Element root = document.getRootElement();
//拿到第一種書節點
Element bookEL = (Element) root.elements("書").get(0);
//給書節點添加子節點
bookEL.addElement("批發價").setText("30");
//將結果保存到硬盤上
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
刪除指定的元素節點
Element root = document.getRootElement();
Element bookEL = (Element) root.elements("書").get(0);
Element insideprice = bookEL.element("售價").element("內部價");
//刪除
insideprice.getParent().remove(insideprice);
//將結果保存到硬盤上
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
操作文件的屬性
//獲取根節點
Element root = document.getRootElement();
//拿到第一種書節點
Element bookEL = (Element) root.elements("書").get(0);
//增加一個屬性
bookEL.addAttribute("類", "科普");
//將結果保存到硬盤上
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
以上就是用dom4j來解析XML文件的幾種方式