2014-10-30 43 views
0

正如在Nokogiri :: XML :: Element中一樣,有一種稱爲屬性的方法可將所有屬性都作爲散列來獲取。而對於NodeSet對象,沒有這樣的方法,我們需要指定屬性鍵來獲取它的值。我知道的XPath要提取屬性的能力,但我想不出有下列情況的解決方案:如何從nokogiri nodeset獲取所有屬性

通常情況下,只有一個名爲ATTR匹配型匹配元素文件中:

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

但現在,我需要承擔僅matct型attr爲允許在此元素標籤:

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

我的想法是讓該元素中的所有屬性,並找出比「匹配 - 其他屬性的大小類型'。

任何解決方案,我可以做到這一點?謝謝!

+0

你寫了代碼來做到這一點,或者你問我們爲你寫嗎? – 2014-10-30 22:17:11

回答

0

這不會直接回答你的問題,因爲不清楚你是否嘗試過任何東西。相反,這段代碼可以修改爲做你想做的事情,但你需要弄清楚要改變什麼:

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]