13.12 xml.sax.xmlreader -- XML パーサのインターフェース

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

各 SAX パーサは Python モジュールとして XMLReader インターフェー スを実装しており、関数 create_parser() を提供しています。こ の関数は新たなパーサ・オブジェクトを生成する際、 xml.sax.make_parser() から引き数なしで呼び出されます。

クラス XMLReader( )
SAX パーサが継承可能な基底クラスです。

クラス IncrementalParser( )

入力ソースをパースする際、すべてを一気に処理しないで、途中でドキュメ ントのチャンクを取得したいことがあります。SAX リーダは通常、ファイル 全体を一気に読み込まずチャンク単位で処理するのですが、全体の処理が終 わるまで parse() は return しません。つまり、 IncrementalParser インターフェースは parse() にこのような排 他的挙動を望まないときに使われます。

パーサのインスタンスが作成されると、feed メソッドを通じてすぐに、デー タを受け入れられるようになります。close メソッドの呼出しでパースが終 わると、パーサは新しいデータを受け入れられるように、reset メソッドを 呼び出されなければなりません。

これらのメソッドをパース処理の途中で呼び出すことはできません。つまり、 パースが実行された後で、パーサから return する前に呼び出す必要がある のです。

なお、SAX 2.0 ドライバを書く人のために、XMLReader インターフェースの parse メソッドがデフォルトで、IncrementalParser の feed、close、 reset メソッドを使って実装されています。

クラス Locator( )

SAX イベントとドキュメントの位置を関連付けるインターフェースです。 locator オブジェクトは DocumentHandler メソッドを呼び出している間 だけ正しい情報を返し、それ以外とのときに呼び出すと、予測できない結果 が返ります。情報を取得できない場合、メソッドは None を返すこ ともあります。

クラス InputSource( [systemId])
XMLReader がエンティティを読み込むために必要な情報をカプセ ル化します。

このクラスには公開識別子、システム識別子、(場合によっては文字エンコー ディング情報を含む)バイト・ストリーム、そしてエンティティの文字スト リームなどの情報が含まれます。

アプリケーションは XMLReader.parse() メソッドに渡す引き数、 または EntityResolver.resolveEntity の戻り値としてこのオブジェトを作 成します。

InputSource はアプリケーション側に属します。 XMLReader はアプリケーションから渡された InputSource オブジェクトの変更を許していませんが、コピーを作り、それを変更するこ とは可能です。

クラス AttributesImpl( attrs)
Attributes interface13.12.5 参照)の実装です。辞書風のオブジェクトで、 startElement() 内で要素の属性表示をおこないます。多くの辞書 風オブジェクト操作に加え、ほかにもインターフェースに記述されているメ ソッドを、多数サポートしています。このクラスのオブジェクトはリーダ によってインスタンスを作成しなければなりません。また、attrs は 属性名と属性値を含む辞書風オブジェクトでなければなりません。

クラス AttributesNSImpl( attrs, qnames)
AttributesImpl を名前空間認識型に改良したクラスで、 startElementNS() に渡されます。AttributesImpl の派 生クラスですが、namespaceURIlocalname、この2つのタプ ルを解釈します。さらに、元のドキュメントに出てくる修飾名を返す多くの メソッドを提供します。このクラスは AttributesNS interface ( section 13.12.6 参照) の実装です。



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