Ответ 1
Вы можете использовать name()
или local-name()
XPath.
См. примеры zvon.
Я использую 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
Вы можете использовать name()
или local-name()
XPath.
См. примеры zvon.
Я знаю, что это немного устарело, но вы должны сделать: xml.xpath('//meagerie/*[not(penguin)]/name()')
как выражение. Обратите внимание на косую черту, а не на точку. Так вы называете методы текущего node в XPath.