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

Java DOM 操作 XML:新增元素完整範例 (insertBefore 用法)

     編輯:Java 相關知識

使用標準 javax.xml.parsers (DOM) 解析 XML,建立新元素節點並插入指定位置,最後用 Transformer 寫回檔案。

原始 XML (Book.xml)

<?xml version="1.0" encoding="UTF-8"?>
<書架>
  <書>
    <書名>Thinking in Java</書名>
    <作者>Eric</作者>
    <售價>$34</售價>
  </書>
</書架>

核心代碼

public void addElement2() throws Exception {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document doc = builder.parse(new File("src/Day01/Book.xml"));

    Element newEle = doc.createElement("作者");
    newEle.setTextContent("ZC"); // <作者>ZC

    // 取得目標節點 <書名>
    Node target = doc.getElementsByTagName("書名").item(0);

    // 在 <書名> 之前插入新元素 (成為同層前一個兄弟節點)
    target.getParentNode().insertBefore(newEle, target);

    // 寫回檔案
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer tr = tf.newTransformer();
    tr.transform(new DOMSource(doc), new StreamResult(new FileOutputStream("src/Day01/Book.xml")));
}

修改後 XML

<?xml version="1.0" encoding="UTF-8"?>
<書架>
  <書>
    <作者>ZC</作者>  <!-- 新增 -->
    <書名>Thinking in Java</書名>
    <作者>Eric</作者>
    <售價>$34</售價>
  </書>
</書架>

關鍵點

  • Node.insertBefore(newNode, refNode):在 refNode 之前插入;若 refNode 為 null 則等同 appendChild。
  • 寫入時需指定 DOMSource (來源 DOM 樹) 與 StreamResult (輸出流)。
  • DOM 適合小型文檔;大型 XML 建議使用 SAX 或 StAX 串流處理避免記憶體壓力。

線上 XML 工具推薦

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved