Pregunta

Tengo un documento XML con una DTD y me encantaría poder acceder al modelo XML, algo como esto:

title = Thing.Items[0].Title

¿Hay alguna manera, en Ruby, de generar este tipo de modelo de objetos basado en una DTD?¿O estoy atascado usando REXML?

¡Gracias!

¿Fue útil?

Solución

Puede utilizar la versión Ruby de xml-simple.

No debería necesitar instalar la gema porque creo que ya está instalada con rieles.http://xml-simple.rubyforge.org/

Otros consejos

si incluye la gema active_support (viene con rieles), agrega el método from_xml al objeto Hash.Luego puede llamar a Hash.from_xml(xml_content) y devolverá un hash que puede usar para acceder a los datos.

No conozco una manera fácil de asignar un xml a un objeto, pero podría crear una clase contenedora que delega las llamadas al método al hash subyacente que contiene los datos.

Sé que esta pregunta se hizo hace un tiempo, pero si desea el verdadero formato de tipo Thing.Items[0].Title, todo lo que necesita hacer es usar 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 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top