我正在使用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
答案 0 :(得分:11)
您可以使用name()
或local-name()
XPath函数。
请参阅zvon上的示例。
答案 1 :(得分:4)
我知道它有点过时,但您应该:xml.xpath('//meagerie/*[not(penguin)]/name()')
作为表达式。注意斜线,而不是点。这是在XPath中调用当前节点上的方法的方法。