|
||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||
| XML | ||||||||||||
|
実用的であるべきというテーマに沿って、RubyはXMLを合理的にサポートしていますが、JavaやC#に比べると穴があることをSchmidt氏は説明しています。通常のアプローチとして、彼はXMLドキュメントを文字列から生成する方法とREXMLやBuilderのようなRubyモジュールについて記述しています。 生の文字列によってXMLを構成する方法は、タグの開始と終了の欠落をはじめとして簡単に間違いを犯しやすいと言った問題を抱えています。さらに文字列とRubyコードが混在したプログラムではプログラムが読み難くなり、保守が非常に難しくなりがちです。これに対してREXMLやBuilderは、より扱いやすい方法でXMLを生成することができます。 Enterprise Integration with Rubyでは、REXMLによるツリー構造としてのアプローチ(Document Object Model [DOM]と同様)と、ストリームとしての逐次のアプローチ(Simple API for XML [SAX]と同様)の両方によるXMLの構文解析の方法を説明しています。 REXMLはXMLを解析するアプリケーションを書く手間を軽減しますが、完全になくすことはできません。これはSchmidt氏が説明するXMLの扱い関するRubyの穴のひとつです。一方でXML処理のコードを書くことの単調さをなくしてくれるXmlSimpleモジュールについても記述しています。このモジュールはXMLドキュメントをハッシュテーブルや配列のようなデータ構造に変換するもので、Rubyハッシュテーブルのキーとしてエレメントや属性の名前を使うことによりXMLエレメントや属性の値を簡単に得ることができます。 もしRubyのXMLサポートが他の言語に比べて革新的ではないと思われる場合、いくつかのXML処理の代替方法を示しています。階層化されたデータを表現することは、XMLが唯一の方法だと考える開発者の人たちがいますが、そんなことはありません。おそらく他のどんな表現方法よりも、多くのデータがコンマで区切られた値(character separated valueであるCSV)で表現されているのです。 もうひとつの形としては、ダイナミック言語の利用者にはよく知られたYAMLがあります。YAMLはその名前のとおりマークアップ言語ではありません(YAML Ain't Markup Language)。RubyはYAMLをシンプルかつコンパクトにし、構造体の表現の形式を扱えるモジュールを提供しています。またEnterprise Integration with Rubyでは、その他のフォーマットについても言及しています。ただしXMLの軽量な代替として定義されているJavaScript Object Notation(JSON;www.json.org)については何も書かれていません。 このような広く知られた簡単に記述できるデータ交換フォーマットは、任意のプログラミング言語に利用できるだけでなく、Rubyの1行のコードを解釈するような単純な表現と同様であるとも言えます。 |
||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||
|
Translated from the original English version and reprinted with permission, from "Enterprise Integration with Ruby" IEEE Internet Computing July/August 2006 issue of the "Toward Integration" column, by Steve Vinoski, vol. 10, no. 4, 2006, pp. 91-93.(c) 2006 IEEE.
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


