使用REXML Document和Ruby获取Element的InnerXML

时间:2012-04-03 11:19:13

标签: ruby xml xml-parsing rexml

我认为我到处都是,但没找到答案。

我正在使用SOAP API,我希望只将部分响应存储在数据库中作为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>

我正在使用带有Rails 3.2.x的ruby 1.9.3-head。

我在某个地方找到了一个.value()方法,但这对元素不起作用,这是我从XPath搜索中得到的。

请告知。

1 个答案:

答案 0 :(得分:2)

doc.root.elements['//SearchResult'].elements.each do | elem |
  p elem
end

给出

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

所以,用

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

您可以检索所有子节点的String表示数组。