XML解析の深淵――XML::Simpleの上をゆけ!:1分ショートレビュー
ある特定の状況ではXML::Simpleは機能しない。本稿では、ツリー解析とイベント駆動型解析という、Perlを使った2つの高度なXML解析方法を紹介する。
ここで紹介する記事は、developerWorksのPerl開発者のためのXML、第2回:Perlを使用した高度なXML解析手法です。
本シリーズの第1回で「多くのケースで必要なすべてのものが揃う魔法のツール」として紹介されたXML::Simple(関連記事参照)。別記事においてはてなの伊藤直也氏もお勧めしているように、PerlアプリケーションでXMLツールと言えば、XML::Simpleを挙げることに異論がある方はそう多くないだろう。
万能に見えるXML::Simpleだが、場合によっては意図したように動作しないケースも存在する。例えば、メモリ内に作成されたXML文書表現からの複雑な方法での検索や、XML文書がメモリ内に収まらなかった場合、XML文書の長さが不明なストリームの場合などだ。本稿では、そのようなケースでのXML解析方法として、ツリー解析とイベント駆動型パーサを紹介するものである。
本稿ではまずXML文書をメモリ内でオブジェクトのツリーに変換する方法を解説。XML文書をDOMツリーに解析できる最も優れたモジュールとして、XML::LibXMLを挙げている。極めて複雑なXML文書の場合には、XML::LibXMLを使用した方が、getElementsByTagNameのようなメソッドを使用できるためだ。このXML::LibXMLを用い、本シリーズ第1回でも使用したペットショップでのデータ処理を例にツリー解析の方法を説明している。
次に本稿が説明するのは、SAX (Simple API for XML)によるイベント駆動型の解析の方法である。この方法に使用するモジュールには、安定性にも処理速度にも優れているとしてXML::SAX::ExpatXSが推奨されている。ここでも新しいペットショップの例を使用して、イベント駆動型によるXML解析方法を紹介している。
さらに、ハンドラでありながら肩書きを変えてパーサの役割を引き受け、イベントを次のハンドラに渡すことで、あらゆる標準SAXイベントを処理できるモジュールとしてXML::SAX:: Baseを紹介し、詳細を解説することでそのメリットを述べている。
本稿は、手軽なXMLとPerlソリューションを必要とするPerlプログラマー向けであるとともに、まったく別のプログラミングスタイルにも役立つ極めて豊富な機能を持っているツールとしてのSAXの手法が詳細に解説されており、多くのプログラマーが参照する価値のある内容である。早速CPANでモジュールをインストールし、実際に試してみてほしい。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここで紹介した記事は、developerWorksのPerl開発者のためのXML、第2回:Perlを使用した高度なXML解析手法です。
関連記事
- developersLife〜開発者という生き方
- XML::Simpleの簡潔さにひざをポンとたたいてしまう
- 連載第1回:何はなくともCPANを知ろう
最近のWebかいわいでは、Webアプリケーション同士が連携してどんどん面白いサービスが生まれています。しかし、Web上のサービスは手元にソフトウェアも何も残らないので、どうしても雲をつかむような分かりにくさがあります。そこで本連載では、Webサービスを実際に利用/作成しながら、そういった「今どき」のテクノロジーを学んでみたいと思います。 - 連載第2回:RSSフィードの料理はLWPとXML::RSSにおまかせ
今回から、いよいよPerlプログラミングの世界に入っていきましょう。手始めに、PerlにおけるWebプログラミングの要ともいえるLWPを用いた、HTTPコンテンツをPerlでHackする手法を解説します。 - 連載第3回:XML::SimpleであらゆるXML文書を料理する
RSSにおけるXML::RSSのように、専用のモジュールがある場合にはそれを使えばよいのですが、そうでない場合は汎用のXMLパーサーモジュールを使ってパースすることになります。今回は、XML::Simpleを使ってあらゆるXML文書を料理できるようにしてみます。 - 連載第4回:Webサービスって実はこんなに簡単
前回まで3回に渡って、PerlにおけるWebプログラミングの基礎を解説しました。今回は一歩進めて、より実用的なアプリケーションを作るため、その足がかりとなるであろうXML Webサービスの使い方について解説していきたいと思います。 - 連載第5回:Amazon Webサービスを料理してみる
Webサービスを使いこなすといっても、Web検索の機能をアプリケーションに統合するだけでは、いまいち面白みがありません。今回は、Amazon.comが提供するAmazon Webサービスを料理してみましょう。 - 連載第6回:Webアプリケーション開発にチャレンジ【前編】
本連載ではこれまで、PerlによるWebプログラミングの基礎から応用まで解説してきました。今回は、これまで学んだことを踏まえた上で、Webサービスを使ったWebアプリケーション開発にチャレンジします。
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.