libxml メモ
※Ruby始めて2週間目の初心者の書いたメモです。
libxml-ruby の libxml を使う上でのメモ。基本的なところだけ。
参考...はなんかまともなのが見つからなかった。みんなどうしているんだろう?
とりあえず、
$ yard server --gems&;open 'http://localhost:8808/docs/libxml-ruby/frames'
README には http://xml4r.github.com/libxml-ruby/rdoc/index.html を見るように書いてあるけど、ver 2.0.1。
require libxml と require xml
通常は下記でおk。
require 'xml'
document = XML::Document.new
XML::* に展開されたくない場合や、ライブラリへ組み込むときは下記のようにする。
require 'libxml'
document = LibXML::XML::Document.new
module MyApplication
include LibXML
class MyClass
def some_method
document = XML::Document.new
end
end
end
…と書いてみるが、あまり意味がハッキリわかってないので、違うかも。
README参照。
XML読み込み
# String
doc = XML::Document.string String #=> LibXML::XML::Document
# file
doc = XML::Document.file 'filepath.xml' #=> LibXML::XML::Document
# io
doc = XML::Document.io open('http://www.ruby-lang.org/ja/feeds/news.rss')
値の参照
値は、通常 LibXML::XML::Documentのfind
メソッドなどを使用し -> LibXML::XML::XPath::Objectを得て -> first
メソッドなどを使用 -> LibXML::XML::Nodeを得て -> content
などで値を得る。
XPath
LibXML::XML::Document から XPath を使用して、LibXML::XML::XPath::Object または、LibXML::XML::Node を得る。
doc.find('//xpath') #=> LibXML::XML::XPath::Object
doc.find_first('//xpath') #=> LibXML::XML::Node
LibXML::XML::XPath::Object から LibXML::XML::Node を得る
doc.find('//xpath').each do |obj|
obj #=> LibXML::XML::XPath::Object
obj.first #=> LibXML::XML::Node
end
doc.find('//xpath').first #=> LibXML::XML::Node
doc.find('//xpath').last #=> LibXML::XML::Node
# 値が1つでも XPath::Object
doc.find('//xpath[1]') #=> LibXML::XML::XPath::Object
# 値がテキストでも XPath::Object
doc.find('//xpath[1]/text()') #=> LibXML::XML::XPath::Object
LibXML::Document から LibXML::XML::Node を得る
LibXML::Documentからいきなり、LibXML::XML::Nodeを得ることも出来る。
eachなど、ツリーをたどる必要がない場合はこっち。
doc.last #=> LibXML::XML::Node
doc.root #=> LibXML::XML::Node
LibXML::XML::Node から値をえる
doc.find_first('//xpath').content #=> String
doc.find_first('//xpath').name #=> String
LibXML::XML::Node から属性を得る
doc.root.attributes #=> LibXML::XML::Attributes
オフィシャルドキュメント
探したけど最新版のAPIDocはないみたい?
オフィシャルの APIDoc と同じだが、RubyForge の方が新しい?