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。以後擔心表現。它可能不會有所作爲。 –