バージョン 2.0 で 新たに追加 された仕様です。
xml.sax パッケージはPython 用の Simple API for XML (SAX) イン ターフェースを実装した数多くのモジュールを提供しています。またパッケー ジには SAX 例外と SAX API 利用者が頻繁に利用するであろう有用な関数群も 含まれています。
その関数群は以下の通りです:
[parser_list]) |
filename_or_stream, handler[, error_handler]) |
string, handler[, error_handler]) |
典型的な SAX アプリケーションでは3種類のオブジェクト(リーダ、ハンドラ、 入力元)が用いられます(ここで言うリーダとはパーサを指しています)。言い 換えると、プログラムはまず入力元からバイト列、あるいは文字列を読み込み、 一連のイベントを発生させます。発生したイベントはハンドラ・オブジェクト によって振り分けられます。さらに言い換えると、リーダがハンドラのメソッ ドを呼び出すわけです。つまり SAX アプリケーションには、リーダ・オブジェ クト、(作成またはオープンされる)入力元のオブジェクト、ハンドラ・オブジェ クト、そしてこれら3つのオブジェクトを連携させることが必須なのです。前 処理の最後の段階でリーダは入力をパースするために呼び出されます。パース の過程で入力データの構造、構文にもとづいたイベントにより、ハンドラ・オ ブジェクトのメソッドが呼び出されます。
これらのオブジェクトは(通常アプリケーション側でインスタンスを作成しな い)インターフェースに相当するものです。Python はインターフェースという 明確な概念を提供していないため、形としてはクラスが用いられています。し かし提供されるクラスを継承せずに、アプリケーション側で独自に実装するこ とも可能です。InputSource、Locator、Attributes、 AttributesNS、XMLReader の各インターフェースは xml.sax.xmlreader モジュールで定義されています。ハンドラ・ インターフェースは xml.sax.handler で定義されています。し ばしばアプリケーション側で直接インスタンスが作成される InputSource とハンドラ・クラスは利便性のため xml.sax にも含まれています。これらのインターフェースに関しては後に解説します。
このほかに xml.sax は次の例外クラスも提供しています。
msg[, exception]) |
インスタンスを作成する際 msg はエラー内容を示す可読データにし
てください。オプションの exception パラメータは None
も
しくはパース用コードで補足、渡って来る情報でなければなりません。
このクラスはSAX 例外の基底クラスになります。
msg, exception, locator) |
msg[, exception]) |
msg[, exception]) |
参考: