重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Ruby初心者です。
rexmlを用いてXMLを扱うことになったのですが、出力がうまくいきません。

XMLファイル
<hoge>
<item>
<name>○○○</name>
<data>・・・・・</data>
<data>・・・・・</data>
</item>
<item>
<name>○○○</name>
<data>・・・・・</data>
<data>・・・・・</data>
</item>
</hoge>

上記のようなXMLファイルから<name>と<data>を取り出して出力しようと思っています。
見よう見まねで以下のようなコードを書いたのですが、これだと複数ある<data>が1つしか取れませんでした。

xml = REXML::Document.new(open("・・・・"))
xml.elements.each("hoge/item") {|line|
puts line.elements["name"].text
puts line.elements["data"].text
}

※都合で簡単に書き直したものをテストせずに載せています

すべての<data>を出力したいのですが、どう書き直せばよいでしょうか?
ご教授願います。

A 回答 (1件)

REXML::elements#[xpath] は、マッチする先頭のエレメントだけを返します。

REXML::elements#each(xpath) か、REXML::element#each_element(xpath) を使えばいいでしょう。

xml.elements.each("hoge/item") do |line|
puts line.elements["name"].text
line.elements.each("data"){|datum| puts datum.text}
end
    • good
    • 0
この回答へのお礼

回答ありがとうございます。おかげさまで無事解決しました。助かりました。

お礼日時:2009/08/01 22:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!