XMLはデータ交換用フォーマットとしてかなりの位置を占めるようになった。もはや、デベロッパレベルでも、アーキテクトレベルでも、XMLは使いこなせて当然と言える。プログラミングレベルでXMLを扱う場合、いくつか代表的なAPIがあるが、もっとも基本的で重要なAPIがDOMだ。XMLをオブジェクトツリーで表現して操作するAPIで、XMLの操作における基本となっている。
DOMは代表的だが、これをそのままプログラミングで活用するとなるとなかなか面倒くさい。1つ1つ要素を取り出していかなければならず、データにアクセスするだけでも結構な量の実装が必要になるからだ。このため、XMLにはデータやノードアクセスするための手段としてXPathが標準化されている。"/document/docgroup[1]/title/p"のように指定すれば直接データにアクセスできるというものだ。これは便利だ。
XMLとは別の側面で最近話題に上っているデータ形式にJSONがある。JSONはStandard ECMA-262 3rd Edition - December 1999のサブセットとして定義された軽量のデータフォーマット。要するにJavaScriptの特定の記述だけでデータを表現するもので、JavaScriptでの扱いが簡単であるほか、それなりの可読性があるといった理由で普及してきている。
JSONの応用どころでは、JSONデータをツリー表示するJavascript JSON Editor、バイナリをJSONで表現するBISON、CSS、YAML、XML、JSONのいいとこ取りをしたRSDなどがある。JavaScript以外の言語とも連帯しており、たとえばJavaとなら、JavaとJSONの相互変換を実行するJSON-libやJettison、JavaオブジェクトをJSONでシリアライズするFlexjsonなどがある。
ここではさらに「JSONPath - XPath for JSON」を紹介したい。
JSONPathはJSONに対してXPathと同じような機能を実現するためのライブラリ。すでにJavaScript版、PHP版、C#版が公開されている。ドキュメントによると、"$.store.book[*].author"、"$..author"、"$..book[(@.length-1)]"、"$..book[?(@.price<10)]"のように表記するようだ。XPathの「/」を「.」に置き換えたような表記になっている。
JSONPathを使うような場合はそもそもXMLを使えばよいのではないかという気がしなくもないが、興味深い取り組みであることには違いない。興味がある方は検討してみるといいだろう。