2012-06-21 50 views
0

我有一些XML,看起來像不要進入元素樹中的XPath

<page id="1"> 
    <subpages> 
    <page id="2"> 
    <subpages> 
     <page id="3"> 
    </subpages> 
    </page> 
    <page id="4"></page> 
    <page id="5"></page> 
    </subpages> 
</page> 

我試圖做的是拉出來的頂級<page>在頂部<subpages>標籤意味着我試着拉出第2,4和5頁,但不是3.

現在我正在做//subpages[1]/page,但這會獲取第一個子頁面標籤中的所有頁面。有沒有辦法做到這一點?

我能夠做到這一點jQuery中與

var c = $(data).find("subpages").first(); 
$(c).children("page").each(function() {}); 

如果我不能得到適當的XPath的工作,有沒有一種方法,使引入nokogiri行爲像jQuery的呢?

回答

1

最簡單的方法是:

/*/*/page 

更明確地說:

/page/subpages/page 

而且,你可能已經做到了這一點(但我會盡量避免//):

(//subpages)[1]/page 
0

相當於你的jQuery將是:

doc.at('subpages').xpath('page').each do |page| 
    puts page.attr('id') 
end 

結果:

2 
4 
5