2012-04-03 14 views
2

Ich habe überall gesucht, aber ich habe keine Antwort gefunden.Erhalte die InnerXML eines Elements mit REXML Document und Ruby

Ich bin ein SOAP API und ich möchte nur einen Teil der Antwort in der Datenbank als XML speichern.

Der Code ist wie folgt:

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

Dies mir alle XML innerhalb des Knotens meiner Antwort gibt.

Ich möchte nur die Inhalte dieses Knotens, nicht der Knoten.

Im Moment bekomme ich:

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

Aber ich will nur:

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

Ich bin mit Ruby-1.9.3-Kopf mit Rails 3.2.x

Ich habe irgendwo eine .value() -Methode gefunden, aber das funktioniert nicht mit Elementen, was ich von der XPath-Suche bekomme.

Bitte beraten.

Antwort

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

gibt

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

Also, mit

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

Sie eine Reihe von String Darstellungen aller Unterknoten abrufen können.

+0

Nice one. Ich hatte darüber nachgedacht, aber ich suchte weiter nach konventionellen 'innerXML'- oder' value'-Methoden aus der Quellbibliothek. Aus Gründen der Zweckmäßigkeit werde ich davon ausgehen, dass dies der einzige Weg ist :) –

Verwandte Themen