查找不在指定路径中的xpath标记



是否可以使用Nokogiri::XML.xpath或任何其他XML解析器来查找指定路径之外的标记?

例如。如果我有以下XML:

<root>
  <bar>baz</bar>
  <foo>
    <bar>baz</bar>
  </foo>
</root>

我知道bar会一直存在于foo内部,但它也可能存在于foo外部,不一定每次都在同一个地方,有没有办法用xpath搜索这种条件?我知道你可以做xml.xpath("//bar"),它会返回bar的所有实例,但我需要能够知道bar存在的父对象。

使用:

xml.xpath('//bar[not(ancestor::foo)]')

这将选择foo元素下任何位置都不的所有bar元素。(这与Dimitre的假设不同,但你没有指定任何一种方式)

对于所提供的XML文档,只选择一个元素:根目录下的bar

使用

//*[not(self::foo) and bar]

这将选择XML文档中不是foo并且具有子bar的所有元素。

对于所提供的XML文档,这只选择了一个元素——root

相关内容

  • 没有找到相关文章

最新更新