REXML

RubyXML ライブラリ REXML を試す。(REXML - Home
Rubyクックブック ―エキスパートのための応用レシピ集 を買ったが、REXML については書かれていない。オリジナルの Ruby Cookbook (Cookbooks (O'Reilly)) には REXML が一章使われて説明されているらしい。

#!/usr/bin/env ruby

require "rexml/document"
include REXML

xml = <<EOS
<records>
 <memo>メモ</memo>
 <record>
  <item>
     <title lang="ja">日本語</title>
     <title lang="en">ENGLISH</title>
  </item>
 </record>
</records>
EOS

doc = Document.new xml

doc.elements.each("/records/record") do |el|
    el.elements.each("item") do |item|
        puts item
        item.elements.each("title") { |e| puts e.text }
        item.elements.each("title[1]") { |e| puts e }
        item.elements.each("title[2]") { |e| puts e.text }
        item.elements.each("title[@lang='ja']") { |e| puts e.text }
        item.elements.each("title[@lang='en']") { |e| puts e }
    end
end

puts doc.root.elements["memo"].text

実行結果

<item>
     <title lang='ja'>日本語</title>
     <title lang='en'>ENGLISH</title>
  </item>
日本語
ENGLISH
<title lang='ja'>日本語</title>
ENGLISH
日本語
<title lang='en'>ENGLISH</title>
メモ