Pergunta

Tenho um documento XML com DTD e adoraria poder acessar o modelo XML, algo assim:

title = Thing.Items[0].Title

Existe uma maneira, em Ruby, de gerar esse tipo de modelo de objeto baseado em um DTD?Ou estou preso usando REXML?

Obrigado!

Foi útil?

Solução

Você pode usar a versão Ruby do xml-simple.

Você não deve precisar instalar o gem, pois acredito que ele já esteja instalado com Rails.http://xml-simple.rubyforge.org/

Outras dicas

se você incluir a gem active_support (vem com Rails), ela adiciona o método from_xml ao objeto Hash.Você pode então chamar Hash.from_xml(xml_content) e ele retornará um hash que você pode usar para acessar os dados.

Não conheço uma maneira fácil de mapear um xml para um objeto, mas você pode criar uma classe wrapper que delegue as chamadas de método ao hash subjacente que contém os dados.

Eu sei que esta pergunta foi feita há algum tempo, mas se você quiser o verdadeiro formato do tipo Thing.Items[0].Title, tudo que você precisa fazer é 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top