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

Java DOM4J 實戰:XML 節點屬性增刪改查完整指南

     編輯:Java 綜合教學

Java DOM4J 實戰:XML 節點屬性增刪改查完整指南

DOM4J 是 Java 操作 XML 的優秀庫,API 簡潔易用。本文通過完整可運行示例,演示 XML 節點屬性的增、刪、改、查核心操作。

準備工作

<?xml version="1.0" encoding="UTF-8"?>
<contactList id="0">
    <contact id="001" class="style">
        <name>張三</name>
        <age>20</age>
        <phone>134222223333</phone>
        <email>zhangsan@qq.com</email>
        <qq>432221111</qq>
    </contact>
    <contact id="002">
        <name>李四</name>
        <age>20</age>
        <phone>134222225555</phone>
        <email>lisi@qq.com</email>
        <qq>432222222</qq>
    </contact>
    <contactTwo>
        <name>王五</name>
        <age>32</age>
        <phone>465431341</phone>
        <emali>af@qq.com</emali>
        <qq>46164694</qq>
    </contactTwo>
    <test>測試</test>
    <test>其他用途</test>
</contactList>

核心操作代碼

package vastsum;
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;

public class AttrDemo {
    @Test
    public void example() throws Exception {
        // 1. 讀取 XML 獲取 Document
        SAXReader reader = new SAXReader();
        Document document = reader.read(new File("./src/contact.xml"));
        
        // 2. 獲取根節點屬性
        Element rootElem = document.getRootElement();
        Attribute rootAttr = rootElem.attribute("id"); // id="0"
        
        // 3. 獲取子節點屬性
        Element contactElem = rootElem.element("contact");
        Attribute contactAttr = contactElem.attribute("id"); // id="001"
        
        // 4. 遍歷節點所有屬性
        for (Iterator it = contactElem.attributeIterator(); it.hasNext();) {
            Attribute attr = (Attribute) it.next();
            System.out.println(attr.getName() + " = " + attr.getValue());
        }
        
        // 5. 新增屬性
        contactElem.addAttribute("name", "zhangsan");
        
        // 6. 修改屬性值
        Attribute nameAttr = contactElem.attribute("name");
        nameAttr.setValue("lisi");
        
        // 7. 刪除屬性
        contactElem.remove(nameAttr);
        
        // 8. 寫回文件
        XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"));
        writer.write(document);
        writer.close();
        
        // 9. 中文編碼處理(如需要)
        /*
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("GBK");
        XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"), format);
        */
        
        // 10. 獲取屬性名與值
        System.out.println(rootAttr.getName());    // id
        System.out.println(contactAttr.getName()); // id
        System.out.println(contactAttr.getValue()); // 001
        System.out.println(rootAttr.getValue());   // 0
    }
}

項目結構

項目目錄結構
源碼與 XML 文件目錄結構

關鍵 API 速查

操作方法說明
讀取文檔SAXReader.read(File)返回 Document 對象
獲取屬性Element.attribute(String name)返回 Attribute 對象
遍歷屬性Element.attributeIterator()返回 Iterator<Attribute>
新增屬性Element.addAttribute(name, value)直接添加
修改值Attribute.setValue(String value)就地修改
刪除屬性Element.remove(Attribute)從節點移除
寫入文件XMLWriter.write(Document)需配合 FileWriter

最佳實踐提醒

  • 操作完成後必須調用 writer.close() 釋放資源
  • 涉及中文時設置 OutputFormat.setEncoding("UTF-8")
  • 單元測試使用 JUnit 4 註解 @Test 便於驗證
  • 屬性值修改後需寫入文件才能持久化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved