Я большой поклонник 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"
Пройдите учебные пособия , чтобы получить краткий старт.Это очень мощный и довольно простой в использовании.