【发布时间】:2011-03-02 11:16:32
【问题描述】:
我找到了a similar question on SO,但是,这似乎不是我想要实现的目标:
说,这是一个示例 XML 文件:
<root>
<item>
<id isInStock="true">10001</id>
<category>Loose Balloon</category>
</item>
<item>
<id isInStock="true">10001</id>
<category>Bouquet Balloon</category>
</item>
<item>
<id isInStock="true">10001</id>
<category>Loose Balloon</category>
</item>
</root>
如果我想从这个 XML 中获取项目元素的“过滤”子集,我如何使用 XPath 表达式直接解决这个问题?
XPathExpression expr = xpath.compile("/root/item/category/text()");
我现在知道这将评估为类别中所有 TextContent 的集合,但是,这意味着我必须使用集合来存储值,然后迭代,然后返回获取其他相关信息,例如再次输入项目 ID。
另一个问题是:如何正确引用父节点?
说,这个 xpath 表达式会让我得到所有 id 节点的集合,对吗?但我想要的是项目节点的集合:
XPathExpression expr = xpath.compile("/root/item/id[@isInStock='true']");
我知道我应该使用“父”轴来指代那个,但我就是无法正确...
有没有更好的方法来做这种事情?现在学习 w3cschools 教程...
抱歉,我是 Java 中 XPath 的新手,在此先感谢您。
【问题讨论】:
-
好问题 (+1)。有关您需要的正确 XPath 表达式,请参阅我的答案。