首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Dom4j 操作 XML 完整教學:生成、解析與寫入範例

     編輯:Java 相關知識

前言

Dom4j 是 Java 操作 XML 的熱門庫,API 直觀、效能優異。本文示範如何使用 Dom4j 建立 XML 文件、寫入磁碟,並解析讀取所需資料。

1. Maven 依賴

<dependency>
    <groupId>org.dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>2.1.4</version>
</dependency>

2. 建立 XML 文件

public void createXml(String fileName, String txtName) throws IOException {
    Document document = DocumentHelper.createDocument();
    Element root = document.addElement("root");
    
    Element head = root.addElement("head");
    head.addAttribute("type", "0");
    head.addAttribute("code", "3003");
    head.addElement("yhlb").setText("01");
    head.addElement("username").setText("gsyh");
    head.addElement("password").setText("zheshimima");
    
    Element body = root.addElement("body");
    body.addElement("data").addElement("dzwjm").setText(txtName);
    
    // 格式化輸出
    OutputFormat format = OutputFormat.createPrettyPrint();
    XMLWriter writer = new XMLWriter(new FileWriter(fileName), format);
    writer.write(document);
    writer.close();
}

產出範例:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <head type="0" code="3003">
    <yhlb>01</yhlb>
    <username>gsyh</username>
    <password>zheshimima</password>
  </head>
  <body>
    <data>
      <dzwjm>test.txt</dzwjm>
    </data>
  </body>
</root>

3. 解析 XML 文件

public String parserXml(String fileName) throws DocumentException {
    File inputXml = new File(fileName);
    SAXReader saxReader = new SAXReader();
    Document document = saxReader.read(inputXml);
    Element root = document.getRootElement();
    
    String findFileName = "";
    for (Iterator<Element> i = root.elementIterator(); i.hasNext(); ) {
        Element head = i.next();
        for (Iterator<Element> j = head.elementIterator(); j.hasNext(); ) {
            Element elem = j.next();
            System.out.println(elem.getName() + ":" + elem.getText());
            for (Iterator<Element> k = elem.elementIterator(); k.hasNext(); ) {
                Element last = k.next();
                System.out.println(last.getName() + ":" + last.getText());
                findFileName = last.getText();
            }
        }
    }
    return findFileName;
}

4. 進階技巧

  • XPath 查詢:Node node = document.selectSingleNode("//head/username");
  • 命名空間處理:使用 Namespace 與 XPath 結合。
  • 大文件流式解析:搭配 SAXReader 事件模式避免記憶體溢位。

5. 常見問題

  1. 中文亂碼 → 確保 OutputFormat 設定 encoding 為 UTF-8,讀取時指定 SAXReader 的 encoding。
  2. 實體字元轉義 → Dom4j 自動處理 <、>、& 等特殊字元。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved