我想了解为什么count
给了我5
?
如果我是根元素并想知道我的孩子,那么它应该给我2
。
doc = Nokogiri::XML(open('link..to....element.xml'))
root = doc.root.children.count
puts root
<element>
<name>Married with Children</name>
<name>Married with Children</name>
</element>
答案 0 :(得分:9)
结果是5
,因为根<element>
节点下有五个子节点。有两个<name>
个节点和三个文本节点,每个节点都由空格组成;在开头<element>
和第一个<name>
之间,一个在<names>
之间,一个在第二个<name>
和结束</element>
之间:
doc.root.children.each do |c|
p c
end
输出:
#<Nokogiri::XML::Text:0x80544a04 "\n ">
#<Nokogiri::XML::Element:0x80544900 name="name" children=[#<Nokogiri::XML::Text:0x8054470c "Married with Children">]>
#<Nokogiri::XML::Text:0x80544554 "\n ">
#<Nokogiri::XML::Element:0x80544478 name="name" children=[#<Nokogiri::XML::Text:0x80544284 "Married with Children">]>
#<Nokogiri::XML::Text:0x805440cc "\n">
如果在解析时使用noblanks
选项Nokogiri将不包含这些空白节点:
doc = Nokogiri::XML(open('link..to....element.xml')) { |c| c.noblanks }
现在doc.root.children.count
将等于2
,只会包含两个<name>
元素节点。