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

title = Thing.Items[0].Title

在 Ruby 中,有没有办法生成这种基于 DTD 的对象模型?或者我被 REXML 困住了?

谢谢!

有帮助吗?

解决方案

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

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

其他提示

如果你包含 active_support gem(rails 附带),它会将 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 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top