2012-04-03 47 views
2

我已經找遍了我想,但沒有找到答案。使用REXML文檔和Ruby獲取元素的InnerXML

我正在使用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> 

我使用Ruby 1.9.3頭使用Rails 3.2.x.

我在某處找到了.value()方法,但這對元素無效,這是我從XPath搜索中獲得的。

請指教。

回答

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

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

所以,用

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

您可以檢索的所有子節點的String表示數組。

+0

不錯的一個。我曾考慮過這一點,但我始終從源代碼庫中尋找傳統的'innerXML'或'value'方法。爲了方便起見,我會假設這是唯一的方法:) – 2012-04-03 12:42:15