是否可以使用Nokogiri::XML.xpath
或任何其他XML解析器查找指定路径之外的标记?
例如。如果我有以下XML:
<root>
<bar>baz</bar>
<foo>
<bar>baz</bar>
</foo>
</root>
我知道bar会永远存在于foo中,但它也可能存在于foo之外,并且不一定每次都在同一个地方,有没有办法用xpath搜索那种情况?我知道你可以做xml.xpath("//bar")
并且它将返回bar的所有实例,但我需要能够知道该bar存在的父对象。
答案 0 :(得分:4)
使用:
xml.xpath('//bar[not(ancestor::foo)]')
这会选择bar
元素下 的所有foo
个元素。 (这与Dimitre的假设不同,但你没有指明任何一种方式)
对于提供的XML文档,这只选择一个元素:根目录下的bar
。
答案 1 :(得分:1)
使用强>:
//*[not(self::foo) and bar]
这将选择XML文档中不是foo
且具有子bar
的所有元素。
对于提供的XML文档,这只选择一个元素 - root
。