我需要使用rexml解析ruby中的xml文档,该文档具有以下结构:
<events>
<event>
<title>Best NYC New Year's Party</title>
<description>Come spend New Year's Eve with us!</description>
<category>conferences</category>
<tags>new year, party</tags>
<start_date>2008-12-31 20:00:00</start_date>
<end_date>2009-01-01 06:00:00</end_date>
<venue>
<name>Madison Square Garden</name>
<address>4 Penn Plaza</address>
<city>New York</city>
<country>United States</country>
</venue>
</event>
</events>
我使用此代码获取title
和说明elements
:
doc_xml.elements.each("events/event") do |element|
event = Event.new
event.title = element.elements["title"].text
event.description = element.elements["description"].text
我试过event.address = element.elements["venue"].elements["address"]
但是我得到nil的未定义方法`elements':NilClass。
但是如何访问name
元素中的venue
元素?
答案 0 :(得分:3)
试试这个
event.address = element.elements["venue"].elements["address"].text unless element.elements["venue"].elements["address"].nil?
因为如果“venue”有一个元素“address”,你应该只使用text方法,否则返回nil。
你可以用同样的方式得到“name”元素:
event.name = element.elements["venue"].elements["name"].text unless element.elements["venue"].elements["name"].nil?
如果您必须使用XML执行更复杂的操作,我建议使用nokogiri
之类的解析器