Generazione di un modello a oggetti in Ruby da un DTD XML
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!
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