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

时间:2008-08-26 15:08:39

标签: xml ruby dtd

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

title = Thing.Items[0].Title

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

谢谢!

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我知道这个问题有一段时间被问过,但是如果你想要真正的Thing.Items [0]。标题类型格式,你需要做的就是使用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 

答案 2 :(得分:0)

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

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