基于xpath我想选择xml的一部分和我想用作另一个xml源的选定部分。
e.g:
<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 =&#34; t1&#34;] /
并且选择的xml将是
<root>
<a type="t1">
<property name="data" value="val1"/>
</a>
<a type="t1">
<property name="data" value="val2"/>
</a>
</root>
同样我想在java中使用另一个xml源代码。 请帮帮我。
答案 0 :(得分:1)
加载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
....
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>
答案 1 :(得分:0)
通过传递适当的xpath表达式
,可以使用以下函数将xml块提取为字符串Point2D