我正在使用 javax.xml.xpath.XPath 包来查找 XML 中存在的节点。代码查找值并返回 NodeList
NodeList nodes = (NodeList) xPath.compile("/books/book/category[1] | /books/book/category[2] | /books/book/category[3]").evaluate(xmlDocument,XPathConstants.NODESET);
我的示例 XML 是:
<books>
<book>
<name>abc</name>
<category>category1</category>
<isbn>152491915491444</isbn>
</book>
<book>
<name>pqr</name>
<isbn>1619126541625</isbn>
</book>
<book>
<name>xyz</name>
<category>category3</category>
<isbn>851926542599595</isbn>
</book>
</books>
我在 NodeList 中得到 2 个节点,因为 XML 的第二个节点中不存在“类别”。
那么有没有办法识别我从 NodeList 获得的节点是我在 xPath.compile 中传递的 xpath 的结果?因为在这里无法识别值 'category3' 来自节点 2 或 3。
或者无论如何要在 XML 中获取节点号,我从中得到结果。在这个例子中,我应该得到节点 1 和 3,因为我得到的类别来自 XML 的第一个和第三个节点。
另一种方法是传递单个 xpath 而不是多个 xpath。但我不想使用这种方法,因为它很耗时,而且我必须处理很多这样的 XML。