Dom4j 是 Java 操作 XML 的經典庫,API 直觀、支援 XPath、性能優異。本文提供官方下載鏈接、JAR 依賴說明,並分六大模塊(Document、節點、屬性、寫入、字串轉換、XPath)給出完整代碼範例,涵蓋讀取檔案/文本、創建文檔、遍歷/增刪改查、編碼處理、輸出格式化、XPath 查詢等全場景操作。
dom4j-1.6.1.jar(核心)+ jaxen-1.1-beta-7.jar(XPath 支援)| 模塊 | 關鍵 API | 典型場景 |
|---|---|---|
| Document | SAXReader.read(File)、DocumentHelper.parseText/createDocument | 讀取檔案/解析字串/程式化創建 |
| 節點 | getRootElement、element(name)、elements(name)、elementIterator、addElement、setText、remove | 遍歷、查找、新增、修改、刪除節點 |
| 屬性 | attribute(name)、attributeValue、attributeIterator、addAttribute、remove | 屬性讀寫遍歷刪除 |
| 寫入檔案 | XMLWriter + FileWriter、OutputFormat.createPrettyPrint().setEncoding("GBK/UTF-8") | 中文編碼正確輸出、格式化縮排 |
| 字串互轉 | DocumentHelper.parseText、asXML()(Document/Element 通用) | XML↔String 雙向轉換 |
| XPath 查詢 | document.selectNodes("/path/to/node")、selectSingleNode | 複雜路徑快速定位,配合 Iterator 處理結果集 |
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("sample.xml"));
List projects = doc.selectNodes("/projectDescription/projects/project");
for (Element e : projects) {
System.out.println(e.getText()); // PRJ1, PRJ2, PRJ3, PRJ4
}
OutputFormat.setEncoding("UTF-8"),否則亂碼attributeValue(name) 直接取字串,簡潔安全