Ruby-on-rails-2.1-rails-and-xml

提供:Dev Guides
移動先:案内検索

Ruby on Rails 2.1-XML-RXML

Railsは、XMLマークアップとデータ構造を作成する2つのクラスを提供します。

  • Builder :: XmlMarkup -これはXMLマークアップ表記を生成します。
  • Builder :: XmlEvents -これはXMLイベント(つまり、SAXのような)を生成します。 (すなわち SAXのような)
    === Builder
    XmlMarkup

このクラスを使用すると、XMLマークアップを簡単に作成できます。 XmlMarkupオブジェクトに送信されるすべてのメソッドは、同等のXMLマークアップに変換されます。 ブロックを持つメソッドは、ブロック内にネストされたマークアップを持つXMLマークアップタグとして扱われます。

xmがXmlMarkupオブジェクトであると仮定して、Railsの標準ドキュメントサイトから1つの例を取り上げました。 ここで、コメント部分は、対応するRailsステートメントから生成されています。

xm.em("emphasized")
# => <em>emphasized</em>
xm.em { xmm.b("emp & bold") }
# => <em><b>emph &amp; bold</b></em>
xm.a("A Link", "href"=>"http://onestepback.org")
# => <a href="http://onestepback.org">A Link</a>
xm.div { br }
# => <div><br/></div>
xm.target("name"=>"compile", "option"=>"fast")
# => <target option="fast" name="compile"\>
# NOTE: order of attributes is not specified.
xm.instruct!
# <?xml version="1.0" encoding="UTF-8"?>
xml {                      # <html>
   xm.head {                    #   <head>
      xm.title("History")
      #  <title>History</title>
   }                            #   </head>
   xm.body {                    #   <body>
      xm.comment! "HI"           #   <!-- HI -->
      xm.h1("Header")            #   <h1>Header</h1>
      xm.p("paragraph")          #   <p>paragraph</p>
   }                            #   </body>
}                              #   </html>

Builder :: XmlEvents

このクラスを使用して、SAXに似た一連のXMLイベントを作成できます(例: start_tag、end_tag)マークアップコードから。

XmlEventオブジェクトは、文字ベースのマークアップを生成するのではなく、一連のイベントが生成されてハンドラーに渡されることを除いて、XmlMarkupオブジェクトと同様の方法で使用されます。

xe = Builder::XmlEvents.new(hander)
xe.title("HI")
# This sends start_tag/end_tag/text messages to the handler.

XMLイベントハンドラー

ハンドラーオブジェクトは、次のイベントを予期する必要があります。

  • * start_tag(tag、attrs)*-新しいタグが見つかったことを通知します。 tagはタグの名前で、attrsはタグの属性のハッシュです。
  • * end_tag(tag)*-タグの終了タグが見つかったことを通知します。
  • * text(text)*-文字列(テキスト)が見つかったことを通知します。 一連の文字は複数のテキストコールに分割される可能性があるため、クライアントは単一のコールバックにすべてのテキストデータが含まれていると想定することはできません。