Генерация объектной модели в Ruby из XML DTD - PullRequest
0 голосов
/ 26 августа 2008

У меня есть документ XML с DTD, и я хотел бы иметь возможность доступа к модели XML, что-то вроде этого:

title = Thing.Items[0].Title

Есть ли в Ruby способ генерировать объектную модель такого типа на основе DTD? Или я застрял с использованием REXML?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 26 августа 2008

если вы включите гем active_support (поставляется с рельсами), он добавляет метод from_xml к объекту Hash. Затем вы можете вызвать Hash.from_xml (xml_content), и он вернет хеш, который вы можете использовать для доступа к данным.

Я не знаю простого способа сопоставить xml с объектом, но вы могли бы создать класс-оболочку, который делегирует вызовы метода базовому хешу, который содержит данные.

1 голос
/ 22 сентября 2009

Я знаю, что этот вопрос задавали некоторое время назад, но если вам нужен настоящий формат типа Thing.Items [0] .Title, все, что вам нужно сделать, это использовать 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 
0 голосов
/ 26 августа 2008

Вы можете использовать версию xml-simple для ruby.

Вам не нужно устанавливать гем, так как я считаю, что он уже установлен с рельсами. http://xml -simple.rubyforge.org /

...