[英]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.