2012-03-17 42 views
3

是否有可能使用Nokogiri::XML.xpath或任何其他XML解析器来查找超出指定路径的标记?找不到指定路径中的xpath标记

例如,如果我有下面的XML:

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

我知道那个酒吧永远富的内部存在的,但它也可能存在富之外,而不一定在同一个地方,每次,有没有办法来搜索xpath的那种情况?我知道你能做到xml.xpath("//bar"),它将返回酒吧的所有实例,但我需要能够知道父对象,酒吧存在

回答

4

用途:

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

这里选择不一个foo元素下的任何地方所有bar元素。 (这与Dimitre所做的假设不同,但您没有指定任何一种方式)

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

+0

正是我在找的,谢谢! – Eugene 2012-03-19 12:34:59

1

使用

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

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

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

相关问题