不要进入xpath中的元素树

时间:2012-06-21 21:28:08

标签: xml xpath nokogiri

我有一些看起来像

的XML
<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一样?

2 个答案:

答案 0 :(得分:1)

最简单的方法是:

/*/*/page

更明确地说:

/page/subpages/page

另外,你可以这样做(但我尽量避免//):

(//subpages)[1]/page

答案 1 :(得分:0)

你的jQuery相当于:

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

结果:

2
4
5