0

我有一些看起来像的 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 一样?

4

2 回答 2

1

最简单的方法是:

/*/*/page

更明确地说:

/page/subpages/page

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

(//subpages)[1]/page
于 2012-06-21T22:12:22.720 回答
0

相当于您的 jQuery 将是:

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

结果:

2
4
5
于 2012-06-22T16:27:30.203 回答