我正在使用 Nokogiri 解析一个大型XML文件。假设我有以下结构:
<menagerie>
<penguin>Pablo</penguin>
<penguin>Mortimer</penguin>
<bull>Ferdinand</bull>
<aardvark>James Cornelius Madison Humphrey Zophar Handlebrush III</aardvark>
</menagerie>
我可以像这样数出非企鹅:
xml.xpath('//menagerie//*[not(penguin)]').length // 2
但我如何获取标签列表,就像这样?(确切的格式并不重要;我只是想直观地浏览非企鹅标签。)
bull
aardvark
更新
这样做给了我想要的列表 - 感谢 Oded、TMN 和 delnan!
xml.xpath('//menageries/*[not(penguin)]').each do |node|
puts node.name()
end
grep
,而是在 Ruby 中收集每个项目的标签名称。类似于tags = xml.xpath(...).collect { |tag| tag.tagname}
。 - user395760xml.xpath(...).map(&:name)
来缩短代码。 - Phrogzfoo.bar
那么bar
总是一个方法调用。但你说得很对,仅使用bar()
对于解释器在出错时的歧义较少。 - Phrogz