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

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



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