从XML DTD在Ruby中生成对象模型

时间:2020-03-05 18:43:21  来源:igfitidea点击:

我有一个带有DTD的XML文档,并且希望能够访问XML模型,如下所示:

title = Thing.Items[0].Title

在Ruby中,有没有一种方法可以基于DTD生成这种对象模型?还是我坚持使用REXML?

谢谢!

解决方案

回答

如果包含active_support gem(带有rails),则会将from_xml方法添加到Hash对象。然后,我们可以调用Hash.from_xml(xml_content),它将返回可用于访问数据的哈希。

我不知道将xml映射到对象的简单方法,但是我们可以创建一个包装器类,该包装器类将方法调用委托给保存数据的基础哈希。

回答

我们可以使用ruby版本的xml-simple。

我们不需要安装gem,因为我相信它已经安装了rails。
http://xml-simple.rubyforge.org/

回答

我知道这个问题是在不久前被问到的,但是如果我们想要真正的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