Dom4j
一、概述
1.功能
優秀的Java XML API,用來處理XML數據
2. 搭建Dom4j環境
導入dom4j-1.6.1.jar包
二、使用Dom4j
1.讀取XML文件
- 調用SAXreader的read方法獲取Document對象
- 調用Document對象的getRootElement方法獲取根標籤
- 調用Element的getName獲取標籤名,getText獲取標籤文本
2.Element的獲取方法
子標籤相關
element();element(“標籤名”); ——>找到第一個符合的子標籤
elements();elements(“標籤名”); ——>找到符合的所有子標籤List
elementIterator(); ——>獲取所子標籤性Iterator
elementText(“標籤名”); ——>獲取子標籤文本
elementTextTrim(“標籤名”); ——>獲取去除所有空白的子標籤文本
屬性相關
- attribute(“屬性名”); ——>獲取屬性
- attributes(); ——>獲取所有屬性List
- attributeIterator(); ——>獲取所有屬性Iterator
- attributeValue(“屬性名”); ——>獲取屬性值
三、使用XPath查找節點
1.概述
- 功能:快速定位到XML中的節點
- 導入jaxen-1.1-beta-6.jar包
2.使用
調用Document的方法
- selectNodes(“定位用XPath表達式”,[排序用XPath表達式]) ——>返回List;
- selectSingleNode(“定位用XPath表達式”) ——>返回Node;
3.XPath語法
絕對路徑查找
- 以”/”開頭,”/”代表Document對象
相對路徑查找
- 以”.”代表當前節點,”..”代表當前節點的父節點
- 在哪個節點對象上執行XPath,當前節點就是哪個節點
全文搜索
- 以”//”開頭,通配前面的任意個節點
屬性節點前要加”@”
謂語(附加條件)
- 在節點後附加[謂語]
- 允許寫函數調用last()、count(節點)
- 允許比較運算符
- 允許and、or
- 數字代表位置,從1開始
4.構建Document
DocumentHelper靜態類[調用DocumentFactory.getInstance()]
- createDocument(Element/空) ——>創建Document對象
- createElement(QName/String) ——>創建Element對象
- createAttribute(Element, QName, String) ——>創建Attribute對象
Element的添加方法[底層用DocumentFactory,雙鏈表樹]
- add([int],Element)
- addElement(String).setText(String)
- addAttribute(String,String)
- add(Attribute).setValue(String)
Element的刪除方法
- 調用父節點的remove(Node) ——>移除Element或Attribute
- 調用自身的detach() ——>分離Element
5.Document輸出爲XML文件
XMLWriter
- 創建XMLWriter對象
- 傳入一個流對象和輸出編碼(OutputFormat)
- OutputStream ——>根據OutputFormat轉換爲BufferedWriter
- FileWriter ——>當本地編碼是UTF-8時纔不會亂碼,否則需要轉換流
- 調用XMLWriter的writer(Docuement)方法輸出文件
- 調用XMLWriter的close()方法關閉流
OutputFormat——>指定輸出編碼和文檔聲明的encoding
OutputFormat靜態方法
- createCompactFormat()壓縮格式,無多餘空白,方便網絡傳輸
- createPrettyPrint()漂亮格式,包含空白,方便查閱
setEncoding(String) ——>設置輸出編碼