gpt4 book ai didi

java - 如何在java中使用xpath获取xml的一部分

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:12 25 4
gpt4 key购买 nike

基于 xpath,我想选择 xml 的一部分,并选择我想用作另一个 xml 源的部分。

例如:

 <root>
<a type="t1">
<property name="data" value="val1"/>
</a>
<a type="t2">
<property name="data" value="val2"/>
</a>
<a type="t1">
<property name="data" value="val2"/>
</a>
</root>

xpath:/root/a[@type="t1"]/

所选的 xml 为

<root>
<a type="t1">
<property name="data" value="val1"/>
</a>
<a type="t1">
<property name="data" value="val2"/>
</a>
</root>

同样我想在java中用作另一个xml源。请帮帮我。

最佳答案

加载 XML 并找到您要查找的节点...

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
DocumentBuilder b = f.newDocumentBuilder();
Document d = b.parse(...);

// Find all nodes with the attribute of type equal to `t1`
// You could use //*/a[@type='t1'] if you wanted to narrow it down
// This find ALL matches through out the document...
String expression = "//*[@type='t1']";
XPath xPath = XPathFactory.newInstance().newXPath();
Object result = xPath.compile(expression).evaluate(d, XPathConstants.NODESET);

NodeList nodes = (NodeList) result;

创建一个新的文档....

Document d2 = b.newDocument();
Element root = d2.createElement("root");
d2.appendChild(root);

将节点从第一个添加到第二个...

for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
d2.adoptNode(node);
root.appendChild(node);
}

这应该导致......

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root>
<a type="t1">
<property name="data" value="val1"/>
</a>
<a type="t1">
<property name="data" value="val2"/>
</a>
</root>

关于java - 如何在java中使用xpath获取xml的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27498008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com