2
我有以下的常规XML
文件:的Java的XPath获得具有特定标签的所有节点匹配特定的文本
<root>
<Items>
<Item>
<tag1>text1</tag1>
<tag2>text2</tag2>
<tag3>text3</tag3>
</Item>
<Item>
<tag1>text1</tag1>
<tag2>text4</tag2>
<tag3>text5</tag3>
</Item>
</Items>
</root>
而且我想要得到的所有节点(所有<Item>
)其中<tag1>
文本等于text1
,然后打印他们的所有其他标签,例如<tag2>
。
我开始用这个,但苦苦寻找答案,将要做的:
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(("\URI\file.xml"));
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
//TODO: Is this correct query?
XPathExpression expr = xpath.compile("//root//Items//Item//tag1[contains(., 'text1')]");
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i=0; i<nl.getLength(); i++) {
//TODO: How to iterate over all matched <Item> and get their <tag2>, <tag3> etc.?
}
} catch (Exception e) {e.printStackTrace();}
感谢,
但是我用Java和没有我需要把像// //根项目//项目的所有路径//为了使搜索更有效率?谢谢, – michael
,我不想要下面的兄弟姐妹,因为一般情况下我有更多的标签。我编辑了这个问题 – michael
你可以使用相同的XPathin java!如果您至少使用XPath 2。以后担心表现。它可能不会有所作为。 –