我正在使用Nokogiri和Ruby来解释XML文件的内容。我想在我的示例中获得所有元素的数组(或类似),这些元素是<where>
的直接子元素。但是,我收到了各种不同的文本节点(例如"\n\t\t\t"
),这是我不想要的。有什么方法可以删除或忽略它们吗?获取没有文本节点的元素的子元素
以上Ruby脚本输出:
[#<Nokogiri::XML::Text:0x100344c "\n\t\t\t">, #<Nokogiri::XML::Element:0x1003350 name="username" attributes=[#<Nokogiri::XML::Attr:0x10032fc name="compare" value="e">] children=[#<Nokogiri::XML::Text:0x1007580 "Admin">]>, #<Nokogiri::XML::Text:0x100734c "\n\t\t\t">, #<Nokogiri::XML::Element:0x100722c name="rank" attributes=[#<Nokogiri::XML::Attr:0x10071d8 name="compare" value="gt">] children=[#<Nokogiri::XML::Text:0x1006cec "5">]>, #<Nokogiri::XML::Text:0x10068a8 "\n\t\t">]
我想以某种方式获得下列对象:
[#<Nokogiri::XML::Element:0x1003350 name="username" attributes=[#<Nokogiri::XML::Attr:0x10032fc name="compare" value="e">] children=[#<Nokogiri::XML::Text:0x1007580 "Admin">]>, #Nokogiri::XML::Element:0x100722c name="rank" attributes=[#<Nokogiri::XML::Attr:0x10071d8 name="compare" value="gt">] children=[#<Nokogiri::XML::Text:0x1006cec "5">]>]
目前,我可以解决使用
问题c.each{|child|
if !child.text?
...
end
}
但是c.length == 5
。这将让我的生活更容易,如果有人可以建议如何排除C直接子文本节点,让c.length == 2
感谢。选项2似乎是完美的。 – SimonMayer 2012-02-14 23:48:04