9 xml.sax -- SAX2 パーサのサポート

バージョン 2.0 で 新たに追加 された仕様です。

xml.sax パッケージはPython 用の Simple API for XML (SAX) イン ターフェースを実装した数多くのモジュールを提供しています。またパッケー ジには SAX 例外と SAX API 利用者が頻繁に利用するであろう有用な関数群も 含まれています。

その関数群は以下の通りです:

make_parser( [parser_list])
SAX XMLReader オブジェクトを作成して返します。パーサには最初 に見つかったものが使われます。parser_list を指定する場合は、 create_parser() 関数を含んでいるモジュール名のシーケンス を与える必要があります。parser_list のモジュールはデフォルトの パーサのリストに優先して使用されます。

parse( filename_or_stream, handler[, error_handler])
SAX パーサを作成してドキュメントをパースします。 filename_or_stream として指定するドキュメントはファイル名、ファ イル・オブジェクトのいずれでもかまいません。handler パラメータ には SAX ContentHandler のインスタンスを指定します。 error_handler には SAX ErrorHandler のインスタンスを指 定します。これが指定されていないときは、すべてのエラーで SAXParseException 例外が発生します。関数の戻り値はなく、 すべての処理は handler に渡されます。

parseString( string, handler[, error_handler])
parse() に似ていますが、こちらはパラメータ string で指定されたバッファをパースします。

典型的な SAX アプリケーションでは3種類のオブジェクト(リーダ、ハンドラ、 入力元)が用いられます(ここで言うリーダとはパーサを指しています)。言い 換えると、プログラムはまず入力元からバイト列、あるいは文字列を読み込み、 一連のイベントを発生させます。発生したイベントはハンドラ・オブジェクト によって振り分けられます。さらに言い換えると、リーダがハンドラのメソッ ドを呼び出すわけです。つまり SAX アプリケーションには、リーダ・オブジェ クト、(作成またはオープンされる)入力元のオブジェクト、ハンドラ・オブジェ クト、そしてこれら3つのオブジェクトを連携させることが必須なのです。前 処理の最後の段階でリーダは入力をパースするために呼び出されます。パース の過程で入力データの構造、構文にもとづいたイベントにより、ハンドラ・オ ブジェクトのメソッドが呼び出されます。

これらのオブジェクトは(通常アプリケーション側でインスタンスを作成しな い)インターフェースに相当するものです。Python はインターフェースという 明確な概念を提供していないため、形としてはクラスが用いられています。し かし提供されるクラスを継承せずに、アプリケーション側で独自に実装するこ とも可能です。InputSource、Locator、Attributes、 AttributesNS、XMLReader の各インターフェースは xml.sax.xmlreader モジュールで定義されています。ハンドラ・ インターフェースは xml.sax.handler で定義されています。し ばしばアプリケーション側で直接インスタンスが作成される InputSource とハンドラ・クラスは利便性のため xml.sax にも含まれています。これらのインターフェースに関しては後に解説します。

このほかに xml.sax は次の例外クラスも提供しています。

例外 SAXException( msg[, exception])
XML エラーと警告をカプセル化します。このクラスには XML パーサとアプ リケーションで発生するエラーおよび警告の基本的な情報を持たせることが できます。また機能追加や地域化のためにサブクラス化することも可能です。 なお ErrorHandler で定義されているハンドラがこの例外のインス タンスを受け取ることに注意してください。実際に例外を発生させることは 必須でなく、情報のコンテナとして利用されることもあるからです。

インスタンスを作成する際 msg はエラー内容を示す可読データにし てください。オプションの exception パラメータは None も しくはパース用コードで補足、渡って来る情報でなければなりません。

このクラスはSAX 例外の基底クラスになります。

例外 SAXParseException( msg, exception, locator)
パースエラー時に発生する SAXException のサブクラスです。 パースエラーに関する情報として、このクラスのインスタンスが SAX ErrorHandler インターフェースのメソッドに渡されます。このク ラスは SAXException 同様 SAX Locator インターフェー スもサポートしています。

例外 SAXNotRecognizedException( msg[, exception])
SAX XMLReader が認識できない機能やプロパティに遭遇したとき発 生させる SAXException のサブクラスです。SAX アプリケーショ ンや拡張モジュールにおいて同様の目的にこのクラスを利用することもでき ます。

例外 SAXNotSupportedException( msg[, exception])
SAX XMLReader が要求された機能をサポートしていないとき発生さ せる SAXException のサブクラスです。SAX アプリケーション や拡張モジュールにおいて同様の目的にこのクラスを利用することもできま す。

参考:

SAX: The Simple API for XML
SAX API 定義に関し中心となっているサイトです。Java に よる実装とオンライン・ドキュメントが提供されています。実装 と SAX API の歴史に関する情報のリンクも掲載されています。

xml.sax.handler:モジュール
アプリケーションが提供するオブジェクトの インターフェース定義.

xml.sax.saxutils:モジュール
SAX アプリケーション向けの有用な関数群.

xml.sax.xmlreader:モジュール
パーサが提供するオブジェクトのインター フェース定義.



Subsections
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。