バージョン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 は次の例外クラスも提供しています。
exception SAXException( |
msg[, exception]) |
-
XML エラーと警告をカプセル化します。このクラスには XML パーサとアプ
リケーションで発生するエラーおよび警告の基本的な情報を持たせることが
できます。また機能追加や地域化のためにサブクラス化することも可能です。
なお ErrorHandler で定義されているハンドラがこの例外のインス
タンスを受け取ることに注意してください。実際に例外を発生させることは
必須でなく、情報のコンテナとして利用されることもあるからです。
インスタンスを作成する際 msg はエラー内容を示す可読データにし
てください。オプションの exception パラメータは None
も
しくはパース用コードで補足、渡って来る情報でなければなりません。
このクラスはSAX 例外の基底クラスになります。
exception SAXParseException( |
msg, exception, locator) |
-
パースエラー時に発生する SAXException のサブクラスです。
パースエラーに関する情報として、このクラスのインスタンスが SAX
ErrorHandler インターフェースのメソッドに渡されます。このク
ラスは SAXException 同様 SAX Locator インターフェー
スもサポートしています。
exception SAXNotRecognizedException( |
msg[, exception]) |
-
SAX XMLReader が認識できない機能やプロパティに遭遇したとき発
生させる SAXException のサブクラスです。SAX アプリケーショ
ンや拡張モジュールにおいて同様の目的にこのクラスを利用することもでき
ます。
exception SAXNotSupportedException( |
msg[, exception]) |
-
SAX XMLReader が要求された機能をサポートしていないとき発生さ
せる SAXException のサブクラスです。SAX アプリケーション
や拡張モジュールにおいて同様の目的にこのクラスを利用することもできま
す。
Release 2.3.5, documentation updated on 平成17年10月12日.
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。