【问题标题】:Getting the InnerXML of an Element using REXML Document and Ruby使用 REXML 文档和 Ruby 获取元素的 InnerXML
【发布时间】:2012-04-03 11:19:13
【问题描述】:

我想遍了所有地方,但没有找到答案。

我正在使用一个 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 搜索中得到的。

请指教。

【问题讨论】:

    标签: ruby xml xml-parsing rexml


    【解决方案1】:
    doc.root.elements['//SearchResult'].elements.each do | elem |
      p elem
    end
    

    给予

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

    所以,与

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

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

    【讨论】:

    • 不错的一个。我曾想过这一点,但我一直在从源库中寻找传统的“innerXML”或“值”方法。为了方便起见,我假设这是唯一的方法:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多