簡體   English   中英

如何使用 Java 從 XML 中刪除子元素?

[英]How to remove child elements from XML using Java?

<definitions>
   <form name="enable">
      <data1>...</data1>
      <data2>...</data2>
      <data3>...</data3>
   </form>
   <form>
      <data1>...</data1>
      <data2>...</data2>
      <data3>...</data3>
   </form>
   ...
</definitions>

我想刪除那些具有name屬性的定義標簽子元素(表單)。 例如:在上述情況下,我想從文檔中刪除第一個form元素。 如何在 java 中做到這一點?

刪除所有具有name屬性的 forms 的代碼:

import java.io.File;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.*;
import org.w3c.dom.*;

public class XMLDemo {

    public static void main(String[] args) throws Exception {

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        Document document = dbf.newDocumentBuilder().parse(new File("input.xml"));

        XPathFactory xpf = XPathFactory.newInstance();
        XPath xpath = xpf.newXPath();

        // Create XPathExpression object
        XPathExpression expression = xpath.compile("/definitions/form[@name]");

        // Evaluate expression result on XML document
        NodeList nodes = (NodeList) expression.evaluate(document, XPathConstants.NODESET);

        if (nodes.getLength() > 0) {
            for (int i = 0; i < nodes.getLength(); i++) {
                Node node = nodes.item(i);
                node.getParentNode().removeChild(node);
            }
        }

        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer t = tf.newTransformer();
        t.transform(new DOMSource(document), new StreamResult(System.out));
    }
}

如果您只想刪除name = "enable"的 forms,請進行以下更改:

// Create XPathExpression object
XPathExpression expression = xpath.compile("/definitions/form[contains(@name, 'enable')]");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM