Подтвердить что ты не робот

Каков синтаксис xpath для получения имен тегов?

Я использую 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

Update

Это дало мне список, который я хотел - спасибо Oded и TMN и delnan!

xml.xpath('//menageries/*[not(penguin)]').each do |node|
  puts node.name()
end
4b9b3361

Ответ 1

Вы можете использовать name() или local-name() XPath.

См. примеры zvon.

Ответ 2

Я знаю, что это немного устарело, но вы должны сделать: xml.xpath('//meagerie/*[not(penguin)]/name()') как выражение. Обратите внимание на косую черту, а не на точку. Так вы называете методы текущего node в XPath.