バージョン 2.0 で 新たに追加 された仕様です。
各 SAX パーサは Python モジュールとして XMLReader インターフェー スを実装しており、関数 create_parser() を提供しています。こ の関数は新たなパーサ・オブジェクトを生成する際、 xml.sax.make_parser() から引き数なしで呼び出されます。
) |
) |
入力ソースをパースする際、すべてを一気に処理しないで、途中でドキュメ ントのチャンクを取得したいことがあります。SAX リーダは通常、ファイル 全体を一気に読み込まずチャンク単位で処理するのですが、全体の処理が終 わるまで parse() は return しません。つまり、 IncrementalParser インターフェースは parse() にこのような排 他的挙動を望まないときに使われます。
パーサのインスタンスが作成されると、feed メソッドを通じてすぐに、デー タを受け入れられるようになります。close メソッドの呼出しでパースが終 わると、パーサは新しいデータを受け入れられるように、reset メソッドを 呼び出されなければなりません。
これらのメソッドをパース処理の途中で呼び出すことはできません。つまり、 パースが実行された後で、パーサから return する前に呼び出す必要がある のです。
なお、SAX 2.0 ドライバを書く人のために、XMLReader インターフェースの parse メソッドがデフォルトで、IncrementalParser の feed、close、 reset メソッドを使って実装されています。
) |
SAX イベントとドキュメントの位置を関連付けるインターフェースです。
locator オブジェクトは DocumentHandler メソッドを呼び出している間
だけ正しい情報を返し、それ以外とのときに呼び出すと、予測できない結果
が返ります。情報を取得できない場合、メソッドは None
を返すこ
ともあります。
[systemId]) |
このクラスには公開識別子、システム識別子、(場合によっては文字エンコー ディング情報を含む)バイト・ストリーム、そしてエンティティの文字スト リームなどの情報が含まれます。
アプリケーションは XMLReader.parse() メソッドに渡す引き数、 または EntityResolver.resolveEntity の戻り値としてこのオブジェトを作 成します。
InputSource はアプリケーション側に属します。 XMLReader はアプリケーションから渡された InputSource オブジェクトの変更を許していませんが、コピーを作り、それを変更するこ とは可能です。
attrs) |
attrs, qnames) |