如何从nokogiri节点集获取所有属性



与Nokogiri::XML::Element中一样,有一个名为attributes的方法可以将所有内容作为哈希获取。而对于NodeSet对象,则没有这样的方法,需要指定attribute key来获取其值。我知道xpath有提取属性的能力,但我想不出以下情况的解决方案:

通常,在匹配元素文档中只有一个属性称为匹配类型:

<D:match match-type="starts-with">appren</D:match>

但现在,我需要假设在这个元素标签中只允许matct类型的attr:

<D:match caseless="bogus" match-type="starts-with">appren</D:match>

我的想法是获取该元素中的所有属性,并找出"match-type"以外的属性的大小。

有什么我能做到的解决方案吗?谢谢

这不会直接回答您的问题,因为不清楚您是否尝试过任何东西。相反,可以修改此代码以执行您想要的操作,但您需要弄清楚要更改什么:

require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html>
  <body>
    <a id="some_id" href="/foo/bar/index.html" class='bold'>anchor text</a>
    <a id="some_other_id" href="/foo/bar/index2.html" class='italic'>anchor text</a>
  </body>
</html>
EOT
doc.search('a').map{ |node| node.keys.reject{ |k| k == 'id' }.map{ |p| node[p].size }.inject(:+) } # => [23, 26]

相关内容

  • 没有找到相关文章

最新更新