Domanda

Ho un documento XML con un DTD e mi piacerebbe poter accedere al modello XML, qualcosa del genere:

title = Thing.Items[0].Title

Esiste un modo, in Ruby, per generare questo tipo di modello a oggetti basato su un DTD?Oppure sono bloccato utilizzando REXML?

Grazie!

È stato utile?

Soluzione

Puoi utilizzare la versione Ruby di xml-simple.

Non dovrebbe essere necessario installare la gemma poiché credo che sia già installata con i binari.http://xml-simple.rubyforge.org/

Altri suggerimenti

se includi la gemma active_support (fornita con i binari) aggiunge il metodo from_xml all'oggetto Hash.Puoi quindi chiamare Hash.from_xml(xml_content) e restituirà un hash che puoi utilizzare per accedere ai dati.

Non conosco un modo semplice per mappare un xml su un oggetto, ma potresti creare una classe wrapper che delega le chiamate al metodo all'hash sottostante che contiene i dati.

So che questa domanda è stata posta qualche tempo fa, ma se vuoi il vero formato Thing.Items[0].Title, tutto ciò che devi fare è utilizzare OpenStruct.

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 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top