2011-10-09 73 views
1

我需要解析紅寶石XML文檔,使用REXML,具有以下結構:紅寶石REXML獲得子元素

<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"]但我得到了未定義的方法`元素'爲零:NilClass。

但是我怎樣才能在venue元素裏面訪問name元素?

回答

3

試試這個

event.address = element.elements["venue"].elements["address"].text unless element.elements["venue"].elements["address"].nil? 

,因爲你只能使用文本方式如果「場地」有一個元素「地址」,否則將返回零。

,你可以以同樣的方式獲得「name」元素:

如果您有與XML做更復雜的事情
event.name = element.elements["venue"].elements["name"].text unless element.elements["venue"].elements["name"].nil? 

,我建議使用解析器像nokogiri

+0

謝謝!無是問題。 –