Как перемещаться по объекту XML в Ruby - PullRequest
0 голосов
/ 02 июля 2011

У меня есть обычный объект xml, созданный по ответу веб-службы.

Мне нужно получить некоторые конкретные значения от некоторых определенных ключей ... например:

<tag>
 <tag2>
  <tag3>
   <needThisValue>3</needThisValue>
   <tag4>
    <needThisValue2>some text</needThisValue2>
   </tag4>
  </tag3>
 </tag2>
</tag>

Как я могу получить <needThisValue> и <needThisValue2> в Ruby?

Ответы [ 4 ]

5 голосов
/ 02 июля 2011

Я большой поклонник Nokogiri :

xml = <<EOT
<tag>
 <tag2>
  <tag3>
   <needThisValue>3</needThisValue>
   <tag4>
    <needThisValue2>some text</needThisValue2>
   </tag4>
  </tag3>
 </tag2>
</tag>
EOT

Это создает документ для разбора:

require 'nokogiri'
doc = Nokogiri::XML(xml)

Используйте at, чтобы найтипервый узел, соответствующий методу доступа:

doc.at('needThisValue2').class # => Nokogiri::XML::Element

или search, чтобы найти все узлы, соответствующие методу доступа, как NodeSet, который действует как массив:

doc.search('needThisValue2').class # => Nokogiri::XML::NodeSet
doc.search('needThisValue2')[0].class # => Nokogiri::XML::Element

При этом используется метод доступа CSSчтобы найти первый экземпляр каждого узла:

doc.at('needThisValue').text # => "3"
doc.at('needThisValue2').text # => "some text"

Опять с NodeSet с использованием CSS:

doc.search('needThisValue')[0].text # => "3"
doc.search('needThisValue2')[0].text # => "some text"

Вы можете использовать средства доступа XPath вместо CSS, если хотите:

doc.at('//needThisValue').text # => "3"
doc.search('//needThisValue2').first.text # => "some text"

Пройдите учебные пособия , чтобы получить краткий старт.Это очень мощный и довольно простой в использовании.

2 голосов
/ 02 июля 2011
require "rexml/document"
include REXML
doc = Document.new string
puts XPath.first(doc, "//tag/tag2/tag3/needThisValue").text
puts XPath.first(doc, "//tag/tag2/tag3/tag4/needThisValue2").text
0 голосов
/ 02 июля 2011

Посмотрите на камень Nokogiri.Вы можете прочитать некоторые уроки введите описание ссылки здесь .Это быстро и просто.

0 голосов
/ 02 июля 2011

Попробуйте этот учебник по Нокогири . Вам нужно будет установить камень nokogiri.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...