2012-03-17 38 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

相關問題