1

次の構造を持つ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:NilClassの未定義のメソッド`elements'を取得しました。

しかし、どうすればname要素内のvenue要素にアクセスできますか?

4

1 に答える 1

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のようなパーサーを使用することをお勧めします

于 2011-10-09T18:13:16.747 に答える