LoginSignup
2
3

More than 5 years have passed since last update.

libxml-ruby メモ

Last updated at Posted at 2012-04-06

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 の方が新しい?

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3