xml.sax.xmlreader — XMLパーサーのインターフェース—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/xml.sax.reader
移動先:案内検索

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

ソースコード: :source: `Lib / xml / sax / xmlreader.py`



SAXパーサーは、 XMLReader インターフェースを実装します。 これらはPythonモジュールに実装されており、関数create_parser()を提供する必要があります。 この関数は、 xml.sax.make_parser()によって呼び出され、引数なしで新しいパーサーオブジェクトを作成します。

class xml.sax.xmlreader.XMLReader
SAXパーサーが継承できる基本クラス。
class xml.sax.xmlreader.IncrementalParser

場合によっては、入力ソースを一度に解析するのではなく、ドキュメントのチャンクが利用可能になったときにフィードすることが望ましい場合があります。 リーダーは通常、ファイル全体を読み取るのではなく、チャンクで読み取ることに注意してください。 それでもparse()は、ドキュメント全体が処理されるまで戻りません。 したがって、parse()のブロック動作が望ましくない場合は、これらのインターフェイスを使用する必要があります。

パーサーがインスタンス化されると、すぐにフィードメソッドからのデータの受け入れを開始する準備が整います。 解析が終了した後、resetメソッドを閉じるための呼び出しを呼び出して、フィードから、またはparseメソッドを使用してパーサーが新しいデータを受け入れる準備をする必要があります。

これらのメソッドは、解析中、つまり、解析が呼び出された後、それが戻る前に呼び出されてはならないことに注意してください。

デフォルトでは、このクラスは、SAX 2.0ドライバー作成者の便宜のために、IncrementalParserインターフェイスのfeed、close、およびresetメソッドを使用してXMLReaderインターフェイスのparseメソッドも実装します。

class xml.sax.xmlreader.Locator
SAXイベントをドキュメントの場所に関連付けるためのインターフェイス。 ロケーターオブジェクトは、DocumentHandlerメソッドの呼び出し中にのみ有効な結果を返します。 それ以外の場合、結果は予測できません。 情報が利用できない場合、メソッドはNoneを返す場合があります。
class xml.sax.xmlreader.InputSource(system_id=None)

XMLReader がエンティティを読み取るために必要な情報のカプセル化。

このクラスには、パブリック識別子、システム識別子、バイトストリーム(おそらく文字エンコード情報を含む)、および/またはエンティティの文字ストリームに関する情報が含まれる場合があります。

アプリケーションは、 XMLReader.parse()メソッドで使用し、EntityResolver.resolveEntityから戻るために、このクラスのオブジェクトを作成します。

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

class xml.sax.xmlreader.AttributesImpl(attrs)
これは、Attributesインターフェースの実装です(セクション属性インターフェースを参照)。 これは、startElement()呼び出しの要素属性を表す辞書のようなオブジェクトです。 最も便利な辞書操作に加えて、インターフェイスで説明されている他の多くのメソッドをサポートしています。 このクラスのオブジェクトは、読者がインスタンス化する必要があります。 attrs は、属性名から属性値へのマッピングを含む辞書のようなオブジェクトである必要があります。
class xml.sax.xmlreader.AttributesNSImpl(attrs, qnames)
AttributesImpl の名前空間対応バリアント。これは、startElementNS()に渡されます。 これは AttributesImpl から派生していますが、属性名は namespaceURIlocalname の2つのタプルとして理解されます。 さらに、元のドキュメントに表示されている修飾名を期待するいくつかのメソッドを提供します。 このクラスは、AttributesNSインターフェースを実装します(セクション TheAttributesNSインターフェースを参照)。

XMLReaderオブジェクト

XMLReader インターフェースは、以下のメソッドをサポートします。

XMLReader.parse(source)

入力ソースを処理し、SAXイベントを生成します。 source オブジェクトは、システム識別子(入力ソースを識別する文字列-通常はファイル名またはURL)、 pathlib.Path または path-like にすることができます。 ]オブジェクト、または InputSource オブジェクト。 parse()が戻ると、入力は完全に処理され、パーサーオブジェクトを破棄またはリセットできます。

バージョン3.5で変更:文字ストリームのサポートが追加されました。

バージョン3.8で変更:パスのようなオブジェクトのサポートが追加されました。

XMLReader.getContentHandler()
現在の ContentHandler を返します。
XMLReader.setContentHandler(handler)
現在の ContentHandler を設定します。 ContentHandler が設定されていない場合、コンテンツイベントは破棄されます。
XMLReader.getDTDHandler()
現在の DTDHandler を返します。
XMLReader.setDTDHandler(handler)
現在の DTDHandler を設定します。 DTDHandler が設定されていない場合、DTDイベントは破棄されます。
XMLReader.getEntityResolver()
現在の EntityResolver を返します。
XMLReader.setEntityResolver(handler)
現在の EntityResolver を設定します。 EntityResolver が設定されていない場合、外部エンティティを解決しようとすると、エンティティのシステム識別子が開かれ、使用できない場合は失敗します。
XMLReader.getErrorHandler()
現在の ErrorHandler を返します。
XMLReader.setErrorHandler(handler)
現在のエラーハンドラーを設定します。 ErrorHandler が設定されていない場合、例外としてエラーが発生し、警告が出力されます。
XMLReader.setLocale(locale)

アプリケーションがエラーと警告のロケールを設定できるようにします。

SAXパーサーは、エラーと警告のローカリゼーションを提供する必要はありません。 ただし、要求されたロケールをサポートできない場合は、SAX例外を発生させる必要があります。 アプリケーションは、解析の途中でロケールの変更を要求する場合があります。

XMLReader.getFeature(featurename)
機能機能名の現在の設定を返します。 機能が認識されない場合、SAXNotRecognizedExceptionが発生します。 よく知られている機能名は、モジュール xml.sax.handler にリストされています。
XMLReader.setFeature(featurename, value)
機能名に設定します。 機能が認識されない場合、SAXNotRecognizedExceptionが発生します。 機能またはその設定がパーサーでサポートされていない場合、 SAXNotSupportedException が発生します。
XMLReader.getProperty(propertyname)
プロパティ propertyname の現在の設定を返します。 プロパティが認識されない場合、SAXNotRecognizedExceptionが発生します。 よく知られているプロパティ名は、モジュール xml.sax.handler にリストされています。
XMLReader.setProperty(propertyname, value)
プロパティ名に設定します。 プロパティが認識されない場合、SAXNotRecognizedExceptionが発生します。 プロパティまたはその設定がパーサーでサポートされていない場合、 SAXNotSupportedException が発生します。


IncrementalParserオブジェクト

IncrementalParser のインスタンスは、次の追加メソッドを提供します。

IncrementalParser.feed(data)
データのチャンクを処理します。
IncrementalParser.close()
ドキュメントの終わりを想定します。 これにより、最後にのみチェックできる整形式の条件がチェックされ、ハンドラーが呼び出され、解析中に割り当てられたリソースがクリーンアップされる可能性があります。
IncrementalParser.reset()
このメソッドは、closeが呼び出されてパーサーがリセットされ、新しいドキュメントを解析できるようになった後に呼び出されます。 リセットを呼び出さずに閉じた後に解析またはフィードを呼び出した結果は未定義です。


ロケーターオブジェクト

Locator のインスタンスは、次のメソッドを提供します。

Locator.getColumnNumber()
現在のイベントが始まる列番号を返します。
Locator.getLineNumber()
現在のイベントが始まる行番号を返します。
Locator.getPublicId()
現在のイベントの公開識別子を返します。
Locator.getSystemId()
現在のイベントのシステム識別子を返します。


InputSourceオブジェクト

InputSource.setPublicId(id)
この InputSource のパブリック識別子を設定します。
InputSource.getPublicId()
この InputSource のパブリック識別子を返します。
InputSource.setSystemId(id)
この InputSource のシステム識別子を設定します。
InputSource.getSystemId()
この InputSource のシステム識別子を返します。
InputSource.setEncoding(encoding)

この InputSource の文字エンコードを設定します。

エンコーディングは、XMLエンコーディング宣言に受け入れられる文字列である必要があります(XML推奨のセクション4.3.3を参照)。

InputSource に文字ストリームも含まれている場合、 InputSource のエンコーディング属性は無視されます。

InputSource.getEncoding()
このInputSourceの文字エンコードを取得します。
InputSource.setByteStream(bytefile)

この入力ソースのバイトストリーム(バイナリファイル)を設定します。

SAXパーサーは、文字ストリームも指定されている場合はこれを無視しますが、URI接続自体を開くよりもバイトストリームを使用します。

アプリケーションがバイトストリームの文字エンコードを知っている場合は、setEncodingメソッドを使用して設定する必要があります。

InputSource.getByteStream()

この入力ソースのバイトストリームを取得します。

getEncodingメソッドは、このバイトストリームの文字エンコードを返します。不明な場合は、Noneを返します。

InputSource.setCharacterStream(charfile)

この入力ソースの文字ストリーム(テキストファイル)を設定します。

文字ストリームが指定されている場合、SAXパーサーはバイトストリームを無視し、システム識別子へのURI接続を開こうとしません。

InputSource.getCharacterStream()
この入力ソースの文字ストリームを取得します。


Attributesインターフェース

Attributesオブジェクトは、メソッドcopy()get()__ contains __()items()keys()、およびvalues()。 次のメソッドも提供されます。

Attributes.getLength()
属性の数を返します。
Attributes.getNames()
属性の名前を返します。
Attributes.getType(name)
属性 name のタイプを返します。通常は'CDATA'です。
Attributes.getValue(name)
属性 name の値を返します。


AttributesNSインターフェース

このインターフェースは、Attributesインターフェースのサブタイプです(セクション属性インターフェースを参照)。 そのインターフェイスでサポートされているすべてのメソッドは、AttributesNSオブジェクトでも使用できます。

次の方法も使用できます。

AttributesNS.getValueByQName(name)
修飾名の値を返します。
AttributesNS.getNameByQName(name)
修飾された名前(namespace, localname)ペアを返します。
AttributesNS.getQNameByName(name)
(namespace, localname)ペアの修飾名を返します。
AttributesNS.getQNames()
すべての属性の修飾名を返します。