Frage

Ich habe ein XML-Dokument mit einer DTD und würde gerne auf das XML-Modell zugreifen, etwa so:

title = Thing.Items[0].Title

Gibt es in Ruby eine Möglichkeit, ein solches Objektmodell basierend auf einer DTD zu generieren?Oder stecke ich bei der Verwendung von REXML fest?

Danke!

War es hilfreich?

Lösung

Sie können die Ruby-Version von xml-simple verwenden.

Sie sollten das Juwel nicht installieren müssen, da es meiner Meinung nach bereits mit Schienen installiert ist.http://xml-simple.rubyforge.org/

Andere Tipps

Wenn Sie das Juwel „active_support“ (wird mit Schienen geliefert) einschließen, wird die Methode from_xml zum Hash-Objekt hinzugefügt.Sie können dann Hash.from_xml(xml_content) aufrufen und es wird ein Hash zurückgegeben, den Sie für den Zugriff auf die Daten verwenden können.

Ich kenne keine einfache Möglichkeit, eine XML-Datei einem Objekt zuzuordnen, aber Sie könnten eine Wrapper-Klasse erstellen, die die Methodenaufrufe an den zugrunde liegenden Hash delegiert, der die Daten enthält.

Ich weiß, dass diese Frage vor einiger Zeit gestellt wurde, aber wenn Sie das echte Thing.Items[0].Title-Typformat wünschen, müssen Sie nur OpenStruct verwenden.

require 'rubygems'
require 'activesupport' # For xml-simple
require 'ostruct' 

h = Hash.from_xml File.read('some.xml')
o = OpenStruct.new h
o.thing.items[0].title 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top