Question

J'ai un document XML avec une DTD et j'aimerais pouvoir accéder au modèle XML, quelque chose comme ceci :

title = Thing.Items[0].Title

Existe-t-il un moyen, dans Ruby, de générer ce type de modèle objet basé sur une DTD ?Ou suis-je coincé avec REXML ?

Merci!

Était-ce utile?

La solution

Vous pouvez utiliser la version Ruby de XML-simple.

Vous ne devriez pas avoir besoin d'installer la gemme car je pense qu'elle est déjà installée avec des rails.http://xml-simple.rubyforge.org/

Autres conseils

si vous incluez la gemme active_support (fournie avec des rails), elle ajoute la méthode from_xml à l'objet Hash.Vous pouvez ensuite appeler Hash.from_xml(xml_content) et il renverra un hachage que vous pourrez utiliser pour accéder aux données.

Je ne connais pas de moyen simple de mapper un XML à un objet, mais vous pouvez créer une classe wrapper qui délègue les appels de méthode au hachage sous-jacent qui contient les données.

Je sais que cette question a été posée il y a quelque temps, mais si vous voulez le vrai format de type Thing.Items[0].Title, tout ce que vous avez à faire est d'utiliser 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 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top