我有一个带有DTD的XML文档,并且希望能够访问XML模型,如下所示:
title = Thing.Items[0].Title
在Ruby中,有没有办法基于DTD生成这种对象模型?还是我坚持使用REXML?
谢谢!
答案 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/