Получение InnerXML элемента с использованием REXML Document и Ruby - PullRequest
2 голосов
/ 03 апреля 2012

Думаю, я посмотрел везде, но не нашел ответа.

Я использую API-интерфейс SOAP и хочу сохранить только часть ответа в базе данных в виде XML.

Код выглядит следующим образом:

require 'rexml/document'
doc = REXML::Document.new(response.to_xml)
data = doc.root.elements['//SearchResult'].to_s

Это дает мне весь XML внутри узла моего ответа.

Я хочу только содержимое этого узла, а неузел.

Прямо сейчас я получаю:

<SearchResult>
    <bla></bla>
    <bla2></bla2>
</SearchResult>

Но я хочу только:

<bla></bla>
<bla2></bla2>

Я использую ruby ​​1.9.3-head с Rails 3.2.x.

Я где-то нашел метод .value (), но он не работает с элементами, что я и получаю из поиска XPath.

Пожалуйста, сообщите.

1 Ответ

2 голосов
/ 03 апреля 2012
doc.root.elements['//SearchResult'].elements.each do | elem |
  p elem
end

дает

<bla> ... </>
<bla2> ... </>

Итак, с

data = doc.root.elements['//SearchResult'].elements.map(&:to_s)

вы можете получить массив String представлений всех подузлов.

...