バージョン 2.0 で追加.
xml.sax パッケージは Python 用の Simple API for XML (SAX) インターフェースを実装した数多くのモジュールを提供しています。またパッケージには SAX 例外と SAX API 利用者が頻繁に利用するであろう有用な関数群も含まれています。
その関数群は以下の通りです:
SAX XMLReader オブジェクトを作成して返します。パーサには最初に見つかったものが使われます。 parser_list を指定する場合は、 create_parser() 関数を含んでいるモジュール名のシーケンスを与える必要があります。 parser_list のモジュールはデフォルトのパーサのリストに優先して使用されます。
SAX パーサを作成してドキュメントをパースします。 filename_or_stream として指定するドキュメントはファイル名、ファイル・オブジェクトのいずれでもかまいません。 handler パラメータには SAX ContentHandler のインスタンスを指定します。 error_handler には SAX ErrorHandler のインスタンスを指定します。これが指定されていないときは、すべてのエラーで SAXParseException 例外が発生します。関数の戻り値はなく、すべての処理は handler に渡されます。
parse() に似ていますが、こちらはパラメータ string で指定されたバッファをパースします。
典型的な SAX アプリケーションでは3種類のオブジェクト(リーダ、ハンドラ、入力元)が用いられます(ここで言うリーダとはパーサを指しています)。言い換えると、プログラムはまず入力元からバイト列、あるいは文字列を読み込み、一連のイベントを発生させます。発生したイベントはハンドラ・オブジェクトによって振り分けられます。さらに言い換えると、リーダがハンドラのメソッドを呼び出すわけです。つまり SAX アプリケーションには、リーダ・オブジェクト、(作成またはオープンされる)入力元のオブジェクト、ハンドラ・オブジェクト、そしてこれら3つのオブジェクトを連携させることが必須なのです。前処理の最後の段階でリーダは入力をパースするために呼び出されます。パースの過程で入力データの構造、構文にもとづいたイベントにより、ハンドラ・オブジェクトのメソッドが呼び出されます。
これらのオブジェクトは(通常アプリケーション側でインスタンスを作成しない)インターフェースに相当するものです。 Python はインターフェースという明確な概念を提供していないため、形としてはクラスが用いられています。しかし提供されるクラスを継承せずに、アプリケーション側で独自に実装することも可能です。 InputSource 、 Locator 、 Attributes 、 AttributesNS 、 XMLReader の各インターフェースは xml.sax.xmlreader モジュールで定義されています。ハンドラ・インターフェースは xml.sax.handler で定義されています。しばしばアプリケーション側で直接インスタンスが作成される InputSource とハンドラ・クラスは利便性のため xml.sax にも含まれています。これらのインターフェースに関しては後に解説します。
このほかに xml.sax は次の例外クラスも提供しています。
XML エラーと警告をカプセル化します。このクラスには XML パーサとアプリケーションで発生するエラーおよび警告の基本的な情報を持たせることができます。また機能追加や地域化のためにサブクラス化することも可能です。なお ErrorHandler で定義されているハンドラがこの例外のインスタンスを受け取ることに注意してください。実際に例外を発生させることは必須でなく、情報のコンテナとして利用されることもあるからです。
インスタンスを作成する際 msg はエラー内容を示す可読データにしてください。オプションの exception パラメータは None もしくはパース用コードで補足、渡って来る情報でなければなりません。
このクラスはSAX 例外の基底クラスになります。
パースエラー時に発生する SAXException のサブクラスです。パースエラーに関する情報として、このクラスのインスタンスが SAX ErrorHandler インターフェースのメソッドに渡されます。このクラスは SAXException 同様 SAX Locator インターフェースもサポートしています。
SAX XMLReader が認識できない機能やプロパティに遭遇したとき発生させる SAXException のサブクラスです。 SAX アプリケーションや拡張モジュールにおいて同様の目的にこのクラスを利用することもできます。
SAX XMLReader が要求された機能をサポートしていないとき発生させる SAXException のサブクラスです。 SAX アプリケーションや拡張モジュールにおいて同様の目的にこのクラスを利用することもできます。
参考
SAXException 例外クラスは以下のメソッドをサポートしています。
エラー状態を示す可読メッセージを返します。
カプセル化した例外オブジェクトまたは None を返します。