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
この項、まだまだ続きます。