jruby での nokogiri 。チュートリアルの勝手なまとめ その2

さて、jruby での nokogiri チュートリアルの勝手なまとめ の第2回目です。

前回にも書きましたように、jruby 1.5.6 は cruby1.8.7 とほぼ同等ですが、マルチバイト文字の扱いはまったく同じではありません。私は cruby1.8.7 での動作の検証はやってません。

nokogiri のバージョンは 1.4.4.2 です。
ubuntu10.04 を使用していますので、文字環境は utf-8 がデフォです。

今回は、基本的な検索の例を。


○基本的な検索

[次の内容のファイル shows.xml が自分のホームディレクトリにあるとします]


<root>
<sitcoms>
<sitcom>
<name>Married with Children</name>
<characters>
<character>Al Bundy</character>
<character>Bud Bundy</character>
<character>Marcy Darcy</character>
</characters>
</sitcom>
<sitcom>
<name>Perfect Strangers</name>
<characters>
<character>Larry Appleton</character>
<character>Balki Bartokomous</character>
</characters>
</sitcom>
</sitcoms>
<dramas>
<drama>
<name>The A-Team</name>
<characters>
<character>John "Hannibal" Smith</character>
<character>Templeton "Face" Peck</character>
<character>"B.A." Baracus</character>
<character>"Howling Mad" Murdock</character>
</characters>
</drama>
</dramas>
</root>

この show.xml の中の タグの内容 を返してみる例


$KCODE = 'UTF8'

require 'rubygems'
require 'nokogiri'

# カレントディレクトを HomeDirectory に指定
Dir.chdir(File.expand_path("~/"))

@doc = Nokogiri::XML(File.open("shows.xml"))
tag_characters = @doc.xpath("//character")

puts '■ @doc.xpath("//character") の要素 を出力。'
tag_characters.each{|elem| puts elem}

puts '■ tag_characters[0] を出力。'
puts tag_characters[0]

tag_dramas_characters = @doc.xpath("//dramas//character")

puts '■ @doc.xpath("//dramas//character") の要素 を出力。'
tag_dramas_characters.each{|elem| puts elem}

css_sitcoms_names = @doc.css("sitcoms name")

puts '■ @doc.css("sitcoms name") の要素 を出力。'
css_sitcoms_names.each{|elem| puts elem}

puts '■ @doc.css("dramas name").first の出力'
puts @doc.css("dramas name").first

puts '■ @doc.at_css("dramas name") の出力'
puts @doc.at_css("dramas name")

=begin

実行結果

■ @doc.xpath("//character") の要素 を出力。
<character>Al Bundy</character>
<character>Bud Bundy</character>
<character>Marcy Darcy</character>
<character>Larry Appleton</character>
<character>Balki Bartokomous</character>
<character>John "Hannibal" Smith</character>
<character>Templeton "Face" Peck</character>
<character>"B.A." Baracus</character>
<character>"Howling Mad" Murdock</character>
■ tag_characters[0] を出力。
<character>Al Bundy</character>
■ @doc.xpath("//dramas//character") の要素 を出力。
<character>John "Hannibal" Smith</character>
<character>Templeton "Face" Peck</character>
<character>"B.A." Baracus</character>
<character>"Howling Mad" Murdock</character>
■ @doc.css("sitcoms name") の要素 を出力。
<name>Married with Children</name>
<name>Perfect Strangers</name>
■ @doc.css("dramas name").first の出力
<name>The A-Team</name>
■ @doc.at_css("dramas name") の出力
<name>The A-Team</name>

=end


この項、まだまだ続きます。