Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > rexml/documentライブラリ

library rexml/document

要約

DOM スタイルの XML パーサ。

REXML::Document.new で XML 文書から DOM ツリーを 構築し、ツリーのノードの各メソッドで文書の内容にアクセスします。

以下のプログラムではブックマークの XML からデータを取り出します。

require 'rexml/document'
require 'pp'

Bookmark = Struct.new(:href, :title, :desc)

doc = REXML::Document.new(<<XML)
<?xml version="1.0" encoding="UTF-8" ?>
<xbel version="1.0">
  <bookmark href="http://www.ruby-lang.org/ja/">
    <title>オブジェクト指向スクリプト言語 Ruby</title>
    <desc>Rubyの公式サイト</desc>
  </bookmark>
  <bookmark href="http://rurema.clear-code.com/">
    <title>最速Rubyリファレンスマニュアル検索! | るりまサーチ</title>
    <desc>Rubyリファレンスマニュアルを全文検索できる。
とても便利。
    </desc>
  </bookmark>
  <bookmark href="https://github.com/rurema/bitclust">
    <title>rurema/bitclust · GitHub</title>
  </bookmark>
  <bookmark href="https://rubygems.org/gems/bitclust-core" />
</xbel>
XML

bookmarks = REXML::XPath.match(doc, "/xbel/bookmark").map do |bookmark|
  href = bookmark.attribute("href").value
  title_element =  bookmark.elements["title"]
  title = title_element ? title_element.text : nil
  desc_element = bookmark.elements["desc"]
  desc = desc_element ? desc_element.text : nil
  Bookmark.new(href, title, desc)
end
pp bookmarks
# >> [#<struct Bookmark
# >>   href="http://www.ruby-lang.org/ja/",
# >>   title="オブジェクト指向スクリプト言語 Ruby",
# >>   desc="Rubyの公式サイト">,
# >>  #<struct Bookmark
# >>   href="http://rurema.clear-code.com/",
# >>   title="最速Rubyリファレンスマニュアル検索! | るりまサーチ",
# >>   desc="Rubyリファレンスマニュアルを全文検索できる。\nとても便利。\n    ">,
# >>  #<struct Bookmark
# >>   href="https://github.com/rurema/bitclust",
# >>   title="rurema/bitclust · GitHub",
# >>   desc=nil>,
# >>  #<struct Bookmark
# >>   href="https://rubygems.org/gems/bitclust-core",
# >>   title=nil,
# >>   desc=nil>]

クラス

REXML::Attribute

要素(REXML::Element)の属性を表すクラスです。

REXML::Child

あるノード(親ノード)に子ノードとして保持されている ノードを表すクラスです。

  REXML::AttlistDecl

DTD の属性リスト宣言を表すクラスです。

  REXML::Comment

XML コメントを表すクラス。

  REXML::Declaration

DTD に含まれる各種宣言ノードを表すクラスです。

   REXML::ElementDecl

DTD の要素宣言(Element Decleration)を表すクラスです。

  REXML::Entity

XML における実体(エンティティ、entity)の宣言(declaration)を表わすクラス。

  REXML::ExternalEntity

DTD 内の宣言でパラメータ実体参照を使って宣言が されているものを表わすクラスです。

  REXML::Instruction

XML 処理命令(XML Processing Instruction, XML PI)を表すクラス。

  REXML::NotationDecl

DTD の記法宣言を表すクラスです。

  REXML::Parent

あるノードの親ノードとなりうるノードを表すクラスです。

   REXML::DocType

XML の DTD(文書型定義、Document Type Definition)を表すクラスです。

   REXML::Element

XML の要素(エレメント、element)を表すクラス。

    REXML::Document

XMLの完全な文書(ドキュメント)を表すクラス。

  REXML::Text

XML のテキストノードを表すクラスです。

   REXML::CData

XML の cdata セクションを表すクラス

  REXML::XMLDecl

XML 宣言を表すクラス。

REXML::Elements

要素の集合を表すクラスです。

REXML::Formatters::Default

XMLドキュメントを(文字列として)出力するクラスです。

  REXML::Formatters::Pretty

XMLドキュメントを(文字列として)見た目良く出力するクラスです。

  REXML::Formatters::Transitive

XMLドキュメントをテキストの内容を変えずに 多少の整形を加えて出力するクラスです。

REXML::Output

出力先を wrap するクラスです。 内部用なのでユーザは使わないでください。

REXML::Parsers::BaseParser

内部用です。使わないでください。

REXML::Parsers::TreeParser

内部用です。使わないでください。

REXML::Parsers::XPathParser

XPath 文字列をパースするための内部的なクラスです。

REXML::Source

内部用なのでユーザは使わないでください。

  REXML::IOSource

内部用なのでユーザは使わないでください。

REXML::SourceFactory

内部用なのでユーザは使わないでください。

REXML::XPath

XPath を取り扱うためのクラスです。

REXML::Attributes

属性の集合を表すクラスです。

モジュール

REXML::Encoding

rexml ライブラリでエンコーディングを取り扱うための内部的なモジュールです。

REXML::EntityConst

XML の標準的な実体(エンティティ)を保持しているモジュールです。

REXML::Functions

内部用なのでユーザは使わないでください。

REXML::Namespace

XML 名前空間によって管理される「名前」を持つようなノードを 表すモジュール。

REXML::Node

XML tree 上のノードを表すモジュール。

REXML::XMLTokens

XML をパースするための正規表現を保持しているモジュールです。