Генерация объектной модели в Ruby из XML DTD
Вопрос
У меня есть документ XML с DTD, и мне бы хотелось иметь доступ к модели XML, примерно так:
title = Thing.Items[0].Title
Есть ли в Ruby способ создать такую объектную модель на основе DTD?Или я застрял в использовании REXML?
Спасибо!
Решение
Вы можете использовать рубиновую версию xml-simple.
Вам не нужно устанавливать драгоценный камень, поскольку я считаю, что он уже установлен с помощью рельсов.http://xml-simple.rubyforge.org/
Другие советы
если вы включите гем active_support (поставляется с рельсами), он добавит метод from_xml к объекту Hash.Затем вы можете вызвать Hash.from_xml(xml_content), и он вернет хэш, который вы можете использовать для доступа к данным.
Я не знаю простого способа сопоставить XML с объектом, но вы можете создать класс-оболочку, который делегирует вызовы методов базовому хэшу, в котором хранятся данные.
Я знаю, что этот вопрос был задан некоторое время назад, но если вам нужен настоящий формат типа 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