xml.parsers.expat — Expatを使用した高速XML解析—Pythonドキュメント
xml.parsers.expat —Expatを使用した高速XML解析
警告
pyexpat
モジュールは、悪意を持って構築されたデータに対して安全ではありません。 信頼できないデータまたは認証されていないデータを解析する必要がある場合は、 XMLの脆弱性を参照してください。
xml.parsers.expat モジュールは、Expat非検証XMLパーサーへのPythonインターフェースです。 このモジュールは、XMLパーサーの現在の状態を表す単一の拡張タイプxmlparser
を提供します。 xmlparser
オブジェクトを作成した後、オブジェクトのさまざまな属性をハンドラー関数に設定できます。 その後、XMLドキュメントがパーサーに送られると、XMLドキュメント内の文字データとマークアップに対してハンドラー関数が呼び出されます。
このモジュールは、pyexpat
モジュールを使用して、Expatパーサーへのアクセスを提供します。 pyexpat
モジュールを直接使用することは非推奨です。
このモジュールは、1つの例外と1つの型オブジェクトを提供します。
- exception xml.parsers.expat.ExpatError
- Expatがエラーを報告したときに発生する例外。 Expatエラーの解釈の詳細については、セクション ExpatError例外を参照してください。
- exception xml.parsers.expat.error
- ExpatError のエイリアス。
- xml.parsers.expat.XMLParserType
- ParserCreate()関数からの戻り値のタイプ。
xml.parsers.expat モジュールには、次の2つの関数が含まれています。
- xml.parsers.expat.ErrorString(errno)
- 指定されたエラー番号 errno の説明文字列を返します。
- xml.parsers.expat.ParserCreate(encoding=None, namespace_separator=None)
新しい
xmlparser
オブジェクトを作成して返します。 encoding を指定する場合は、XMLデータで使用されるエンコーディングに名前を付ける文字列である必要があります。 ExpatはPythonほど多くのエンコーディングをサポートしておらず、エンコーディングのレパートリーを拡張することはできません。 UTF-8、UTF-16、ISO-8859-1(Latin1)、およびASCIIをサポートします。 encoding 1 が指定されている場合、ドキュメントの暗黙的または明示的なエンコーディングが上書きされます。Expatは、オプションでXML名前空間処理を実行できます。これは、 namespace_separator の値を指定することで有効になります。 値は1文字の文字列である必要があります。 文字列の長さが不正な場合、 ValueError が発生します(
None
は省略と同じと見なされます)。 名前空間処理を有効にすると、名前空間に属する要素タイプ名と属性名が展開されます。 要素ハンドラーStartElementHandler
およびEndElementHandler
に渡される要素名は、名前空間URI、名前空間区切り文字、および名前のローカル部分を連結したものになります。 名前空間の区切り文字がゼロバイト(chr(0)
)の場合、名前空間URIとローカル部分は区切り文字なしで連結されます。たとえば、 namespace_separator がスペース文字(
' '
)に設定されていて、次のドキュメントが解析される場合:<?xml version="1.0"?> <root xmlns = "http://default-namespace.org/" xmlns:py = "http://www.python.org/ns/"> <py:elem1 /> <elem2 xmlns="" /> </root>
StartElementHandler
は、要素ごとに次の文字列を受け取ります。http://default-namespace.org/ root http://www.python.org/ns/ elem1 elem2
pyexpat
で使用されるExpat
ライブラリの制限により、返されるxmlparser
インスタンスは、単一のXMLドキュメントの解析にのみ使用できます。 ドキュメントごとにParserCreate
を呼び出して、一意のパーサーインスタンスを提供します。
XMLParserオブジェクト
xmlparser
オブジェクトには次のメソッドがあります。
- xmlparser.Parse(data[, isfinal])
- 文字列 data の内容を解析し、適切なハンドラー関数を呼び出して、解析されたデータを処理します。 isfinal は、このメソッドの最後の呼び出しでtrueである必要があります。 複数のファイルを送信するのではなく、フラグメント内の単一のファイルを解析できます。 data はいつでも空の文字列にすることができます。
- xmlparser.ParseFile(file)
- オブジェクトファイルから読み取ったXMLデータを解析します。 file は、
read(nbytes)
メソッドを提供するだけでよく、データがなくなると空の文字列を返します。
- xmlparser.SetBase(base)
- 宣言内のシステム識別子の相対URIを解決するために使用されるベースを設定します。 相対識別子の解決はアプリケーションに任されています。この値は、 base 引数として ExternalEntityRefHandler()、 NotationDeclHandler()、およびに渡されます。 ] UnparsedEntityDeclHandler()関数。
- xmlparser.GetInputContext()
- 現在のイベントを生成した入力データを文字列として返します。 データは、テキストを含むエンティティのエンコーディングにあります。 イベントハンドラーがアクティブでないときに呼び出された場合、戻り値は
None
です。
- xmlparser.ExternalEntityParserCreate(context[, encoding])
- 親パーサーによって解析されたコンテンツによって参照される外部の解析されたエンティティを解析するために使用できる「子」パーサーを作成します。 context パラメーターは、以下で説明する ExternalEntityRefHandler()ハンドラー関数に渡される文字列である必要があります。 子パーサーは、 ordered_attributes および specified_attributes がこのパーサーの値に設定された状態で作成されます。
- xmlparser.SetParamEntityParsing(flag)
- パラメータエンティティ(外部DTDサブセットを含む)の解析を制御します。 可能なフラグ値は、
XML_PARAM_ENTITY_PARSING_NEVER
、XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE
、およびXML_PARAM_ENTITY_PARSING_ALWAYS
です。 フラグの設定が成功した場合はtrueを返します。
- xmlparser.UseForeignDTD([flag])
フラグ(デフォルト)の真の値でこれを呼び出すと、Expatはすべての引数に対して ExternalEntityRefHandler を None で呼び出し、代替DTDをロードできるようにします。 。 ドキュメントにドキュメント型宣言が含まれていない場合でも、 ExternalEntityRefHandler は呼び出されますが、 StartDoctypeDeclHandler および EndDoctypeDeclHandler は呼び出されません。
flag にfalse値を渡すと、true値を渡した前の呼び出しがキャンセルされますが、それ以外の場合は効果がありません。
このメソッドは、 Parse()または ParseFile()メソッドが呼び出される前にのみ呼び出すことができます。 これらのいずれかが呼び出された後に呼び出すと、[X120X] code 属性が
errors.codes[errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING]
に設定された状態で ExpatError が発生します。
xmlparser
オブジェクトには次の属性があります。
- xmlparser.buffer_size
- buffer_text がtrueの場合に使用されるバッファーのサイズ。 この属性に新しい整数値を割り当てることにより、新しいバッファサイズを設定できます。 サイズが変更されると、バッファがフラッシュされます。
- xmlparser.buffer_text
- これをtrueに設定すると、
xmlparser
オブジェクトはExpatから返されたテキストコンテンツをバッファリングし、可能な限り CharacterDataHandler()コールバックへの複数の呼び出しを回避します。 Expatは通常、行末ごとに文字データをチャンクに分割するため、これによりパフォーマンスを大幅に向上させることができます。 この属性はデフォルトではfalseであり、いつでも変更できます。
- xmlparser.buffer_used
- buffer_text が有効になっている場合、バッファーに格納されているバイト数。 これらのバイトは、UTF-8でエンコードされたテキストを表します。 buffer_text がfalseの場合、この属性には意味のある解釈がありません。
- xmlparser.ordered_attributes
- この属性をゼロ以外の整数に設定すると、属性はディクショナリではなくリストとして報告されます。 属性は、ドキュメントテキストに記載されている順序で表示されます。 属性ごとに、属性名と属性値の2つのリストエントリが表示されます。 (このモジュールの古いバージョンもこの形式を使用していました。)デフォルトでは、この属性はfalseです。 いつでも変更できます。
- xmlparser.specified_attributes
- ゼロ以外の整数に設定されている場合、パーサーはドキュメントインスタンスで指定された属性のみを報告し、属性宣言から派生した属性は報告しません。 これを設定するアプリケーションは、XMLプロセッサの動作の標準に準拠するために、必要に応じて宣言から利用できる追加情報を使用するように特に注意する必要があります。 デフォルトでは、この属性はfalseです。 いつでも変更できます。
次の属性には、xmlparser
オブジェクトで発生した最新のエラーに関連する値が含まれており、Parse()
またはParseFile()
の呼び出しで[X196X ] xml.parsers.expat.ExpatError 例外。
- xmlparser.ErrorByteIndex
- エラーが発生したバイトインデックス。
- xmlparser.ErrorCode
- 問題を指定する数値コード。 この値は、 ErrorString()関数に渡すか、
errors
オブジェクトで定義されている定数の1つと比較できます。
- xmlparser.ErrorColumnNumber
- エラーが発生した列番号。
- xmlparser.ErrorLineNumber
- エラーが発生した行番号。
次の属性には、xmlparser
オブジェクトの現在の解析場所に関連する値が含まれています。 解析イベントを報告するコールバック中に、イベントを生成した文字シーケンスの最初の場所を示します。 コールバックの外部で呼び出された場合、示された位置は、(関連付けられたコールバックがあったかどうかに関係なく)最後の解析イベントを過ぎたところになります。
- xmlparser.CurrentByteIndex
- パーサー入力の現在のバイトインデックス。
- xmlparser.CurrentColumnNumber
- パーサー入力の現在の列番号。
- xmlparser.CurrentLineNumber
- パーサー入力の現在の行番号。
設定できるハンドラーの一覧は次のとおりです。 xmlparser
オブジェクト o にハンドラーを設定するには、o.handlername = func
を使用します。 handlername は次のリストから取得する必要があり、 func は正しい数の引数を受け入れる呼び出し可能なオブジェクトである必要があります。 特に明記されていない限り、引数はすべて文字列です。
- xmlparser.XmlDeclHandler(version, encoding, standalone)
- XML宣言が解析されるときに呼び出されます。 XML宣言は、XML推奨の該当するバージョンの(オプションの)宣言、ドキュメントテキストのエンコード、およびオプションの「スタンドアロン」宣言です。 バージョンとエンコーディングは文字列になり、スタンドアロンはドキュメントがスタンドアロンとして宣言されている場合は
1
になり、0
はスタンドアロンとして宣言されている場合になりますスタンドアロンではないと宣言されているか、スタンドアロン句が省略されている場合は-1
。 これは、Expatバージョン1.95.0以降でのみ使用できます。
- xmlparser.StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset)
- Expatが文書型宣言(
<!DOCTYPE ...
)の解析を開始したときに呼び出されます。 doctypeName は、表示されているとおりに提供されます。 systemId および publicId パラメーターは、指定されている場合はシステムIDとパブリックIDを、省略されている場合はNone
を指定します。 has_internal_subset は、ドキュメントに内部ドキュメント宣言サブセットが含まれている場合にtrueになります。 これには、Expatバージョン1.2以降が必要です。
- xmlparser.EndDoctypeDeclHandler()
- Expatが文書型宣言の解析を完了したときに呼び出されます。 これには、Expatバージョン1.2以降が必要です。
- xmlparser.ElementDeclHandler(name, model)
- 要素タイプ宣言ごとに1回呼び出されます。 name は要素タイプの名前であり、 model はコンテンツモデルの表現です。
- xmlparser.AttlistDeclHandler(elname, attname, type, default, required)
- 要素タイプの宣言された属性ごとに呼び出されます。 属性リスト宣言が3つの属性を宣言している場合、このハンドラーは属性ごとに1回ずつ、3回呼び出されます。 elname は宣言が適用される要素の名前であり、 attname は宣言された属性の名前です。 属性タイプは、 type として渡される文字列です。 可能な値は
'CDATA'
、'ID'
、'IDREF'
、… default は、属性がドキュメントで指定されていない場合に使用される属性のデフォルト値を示します。インスタンス、またはデフォルト値(#IMPLIED
値)がない場合はNone
。 ドキュメントインスタンスで属性を指定する必要がある場合、 required はtrueになります。 これには、Expatバージョン1.95.0以降が必要です。
- xmlparser.StartElementHandler(name, attributes)
- すべての要素の開始を求められます。 name は要素名を含む文字列であり、 attributes は要素属性です。 ordered_attributes がtrueの場合、これはリストです(詳細については、 ordered_attributes を参照してください)。 それ以外の場合は、名前を値にマッピングする辞書です。
- xmlparser.EndElementHandler(name)
- すべての要素の終わりを求められます。
- xmlparser.ProcessingInstructionHandler(target, data)
- すべての処理命令に対して呼び出されます。
- xmlparser.CharacterDataHandler(data)
- 文字データが必要です。 これは、通常の文字データ、CDATAでマークされたコンテンツ、および無視できる空白に対して呼び出されます。 これらのケースを区別する必要があるアプリケーションは、 StartCdataSectionHandler 、 EndCdataSectionHandler 、および ElementDeclHandler コールバックを使用して必要な情報を収集できます。
- xmlparser.UnparsedEntityDeclHandler(entityName, base, systemId, publicId, notationName)
- 未解析(NDATA)エンティティ宣言のために呼び出されます。 これは、Expatライブラリのバージョン1.2にのみ存在します。 最新バージョンの場合は、代わりに EntityDeclHandler を使用してください。 (Expatライブラリの基礎となる関数は廃止されたと宣言されています。)
- xmlparser.EntityDeclHandler(entityName, is_parameter_entity, value, base, systemId, publicId, notationName)
- すべてのエンティティ宣言のために呼び出されます。 パラメータおよび内部エンティティの場合、 value は、エンティティの宣言された内容を示す文字列になります。 これは、外部エンティティの場合は
None
になります。 notationName パラメーターは、解析されたエンティティの場合はNone
になり、解析されていないエンティティの場合は表記の名前になります。 is_parameter_entity は、エンティティがパラメータエンティティの場合はtrueになり、一般エンティティの場合はfalseになります(ほとんどのアプリケーションは一般エンティティにのみ関係する必要があります)。 これは、Expatライブラリのバージョン1.95.0以降でのみ使用できます。
- xmlparser.NotationDeclHandler(notationName, base, systemId, publicId)
- 表記宣言が必要です。 notationName 、 base 、 systemId 、および publicId は、指定されている場合は文字列です。 公開識別子を省略すると、 publicId は
None
になります。
- xmlparser.StartNamespaceDeclHandler(prefix, uri)
- 要素に名前空間宣言が含まれている場合に呼び出されます。 名前空間宣言は、宣言が配置されている要素に対して StartElementHandler が呼び出される前に処理されます。
- xmlparser.EndNamespaceDeclHandler(prefix)
- 名前空間宣言を含む要素の終了タグに到達したときに呼び出されます。 これは、 StartNamespaceDeclHandler が呼び出された順序とは逆に、要素の名前空間宣言ごとに1回呼び出され、各名前空間宣言のスコープの開始を示します。 このハンドラーの呼び出しは、要素の終わりに対応する EndElementHandler の後に行われます。
- xmlparser.CommentHandler(data)
- コメントを求めた。 data はコメントのテキストであり、先頭の
'<!-
-'
と末尾の'-
->'
は除きます。
- xmlparser.StartCdataSectionHandler()
- CDATAセクションの開始時に呼び出されます。 これと EndCdataSectionHandler は、CDATAセクションの構文上の開始と終了を識別できるようにするために必要です。
- xmlparser.EndCdataSectionHandler()
- CDATAセクションの最後に呼び出されます。
- xmlparser.DefaultHandler(data)
- 適用可能なハンドラーが指定されていないXMLドキュメント内のすべての文字に対して呼び出されます。 これは、報告される可能性があるが、ハンドラーが提供されていない構成の一部である文字を意味します。
- xmlparser.DefaultHandlerExpand(data)
- これは DefaultHandler()と同じですが、内部エンティティの拡張を禁止しません。 エンティティ参照はデフォルトのハンドラーに渡されません。
- xmlparser.NotStandaloneHandler()
- XMLドキュメントがスタンドアロンドキュメントとして宣言されていない場合に呼び出されます。 これは、外部サブセットまたはパラメーターエンティティへの参照があるが、XML宣言でスタンドアロンが
yes
に設定されていない場合に発生します。 このハンドラーが0
を返す場合、パーサーはXML_ERROR_NOT_STANDALONE
エラーを発生させます。 このハンドラーが設定されていない場合、パーサーはこの条件に対して例外を発生させません。
- xmlparser.ExternalEntityRefHandler(context, base, systemId, publicId)
外部エンティティへの参照を求められます。 base は、 SetBase()への前回の呼び出しで設定された現在のベースです。 パブリック識別子とシステム識別子 systemId と publicId は、指定されている場合は文字列です。 公開識別子が指定されていない場合、 publicId は
None
になります。 context 値は不透明であり、以下で説明するようにのみ使用する必要があります。外部エンティティを解析するには、このハンドラーを実装する必要があります。
ExternalEntityParserCreate(context)
を使用してサブパーサーを作成し、適切なコールバックで初期化し、エンティティを解析します。 このハンドラーは整数を返す必要があります。0
を返す場合、パーサーはXML_ERROR_EXTERNAL_ENTITY_HANDLING
エラーを発生させます。それ以外の場合、解析は続行されます。このハンドラーが提供されていない場合、外部エンティティは DefaultHandler コールバック(提供されている場合)によって報告されます。
ExpatError例外
ExpatError 例外には、いくつかの興味深い属性があります。
- ExpatError.code
特定のエラーに対するExpatの内部エラー番号。 errors.messages ディクショナリは、これらのエラー番号をExpatのエラーメッセージにマップします。 例えば:
from xml.parsers.expat import ParserCreate, ExpatError, errors p = ParserCreate() try: p.Parse(some_xml_document) except ExpatError as err: print("Error:", errors.messages[err.code])
errors モジュールは、エラーメッセージ定数と、これらのメッセージをエラーコードにマッピングする辞書 code も提供します。以下を参照してください。
- ExpatError.lineno
- エラーが検出された行番号。 最初の行には
1
という番号が付けられています。
- ExpatError.offset
- エラーが発生した行への文字オフセット。 最初の列には
0
という番号が付けられています。
例
次のプログラムは、引数を出力する3つのハンドラーを定義します。
import xml.parsers.expat
# 3 handler functions
def start_element(name, attrs):
print('Start element:', name, attrs)
def end_element(name):
print('End element:', name)
def char_data(data):
print('Character data:', repr(data))
p = xml.parsers.expat.ParserCreate()
p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.CharacterDataHandler = char_data
p.Parse("""<?xml version="1.0"?>
<parent id="top"><child1 name="paul">Text goes here</child1>
<child2 name="fred">More text</child2>
</parent>""", 1)
このプログラムからの出力は次のとおりです。
Start element: parent {'id': 'top'}
Start element: child1 {'name': 'paul'}
Character data: 'Text goes here'
End element: child1
Character data: '\n'
Start element: child2 {'name': 'fred'}
Character data: 'More text'
End element: child2
Character data: '\n'
End element: parent
コンテンツモデルの説明
コンテンツモデルは、ネストされたタプルを使用して記述されます。 各タプルには、タイプ、数量詞、名前、および子のタプルの4つの値が含まれています。 子は単に追加のコンテンツモデルの説明です。
最初の2つのフィールドの値は、 xml.parsers.expat.model モジュールで定義されている定数です。 これらの定数は、モデルタイプグループと数量詞グループの2つのグループに収集できます。
モデルタイプグループの定数は次のとおりです。
- xml.parsers.expat.model.XML_CTYPE_ANY
- モデル名で指定された要素は、
ANY
のコンテンツモデルを持つように宣言されました。
- xml.parsers.expat.model.XML_CTYPE_CHOICE
- 名前付き要素を使用すると、いくつかのオプションから選択できます。 これは、
(A | B | C)
などのコンテンツモデルに使用されます。
- xml.parsers.expat.model.XML_CTYPE_EMPTY
EMPTY
として宣言されている要素は、このモデルタイプを持っています。
- xml.parsers.expat.model.XML_CTYPE_MIXED
- xml.parsers.expat.model.XML_CTYPE_NAME
- xml.parsers.expat.model.XML_CTYPE_SEQ
- 次々と続く一連のモデルを表すモデルは、このモデルタイプで示されます。 これは、
(A, B, C)
などのモデルに使用されます。
数量詞グループの定数は次のとおりです。
- xml.parsers.expat.model.XML_CQUANT_NONE
- 修飾子が指定されていないため、
A
のように1回だけ表示できます。
- xml.parsers.expat.model.XML_CQUANT_OPT
- モデルはオプションです。
A?
の場合と同様に、一度だけ表示することも、まったく表示しないこともできます。
- xml.parsers.expat.model.XML_CQUANT_PLUS
- モデルは1回以上発生する必要があります(
A+
など)。
- xml.parsers.expat.model.XML_CQUANT_REP
A*
の場合と同様に、モデルは0回以上出現する必要があります。
エクスパットエラー定数
次の定数は、 xml.parsers.expat.errors モジュールで提供されます。 これらの定数は、エラーが発生したときに発生したExpatError
例外オブジェクトの属性の一部を解釈するのに役立ちます。 下位互換性の理由から、定数の値はエラーメッセージであり、数値エラーコードではないため、コード属性をerrors.codes[errors.XML_ERROR_CONSTANT_NAME]
。
errors
モジュールには次の属性があります。
- xml.parsers.expat.errors.codes
文字列の説明をエラーコードにマッピングする辞書。
バージョン3.2の新機能。
- xml.parsers.expat.errors.messages
数値エラーコードを文字列の説明にマッピングする辞書。
バージョン3.2の新機能。
- xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITY
- xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
- 属性値のエンティティ参照は、内部エンティティではなく外部エンティティを参照していました。
- xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REF
- XMLで無効な文字を参照する文字参照(たとえば、文字
0
または '�
')。
- xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REF
- エンティティ参照は、表記で宣言されたエンティティを参照しているため、解析できません。
- xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTE
- 開始タグで属性が複数回使用されました。
- xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODING
- xml.parsers.expat.errors.XML_ERROR_INVALID_TOKEN
- 入力バイトを文字に適切に割り当てることができなかった場合に発生します。 たとえば、UTF-8入力ストリームのNULバイト(値
0
)。
- xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT
- ドキュメント要素の後に空白以外の何かが発生しました。
- xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PI
- 入力データの先頭以外の場所でXML宣言が見つかりました。
- xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS
- ドキュメントには要素が含まれていません(XMLでは、すべてのドキュメントに1つの最上位要素が含まれている必要があります)。
- xml.parsers.expat.errors.XML_ERROR_NO_MEMORY
- Expatは内部でメモリを割り当てることができませんでした。
- xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REF
- 許可されていない場所にパラメータエンティティ参照が見つかりました。
- xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHAR
- 入力に不完全な文字が見つかりました。
- xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REF
- エンティティ参照には、同じエンティティへの別の参照が含まれていました。 おそらく別の名前を介して、そしておそらく間接的に。
- xml.parsers.expat.errors.XML_ERROR_SYNTAX
- いくつかの不特定の構文エラーが発生しました。
- xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCH
- 終了タグが最も内側の開いている開始タグと一致しませんでした。
- xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKEN
- 一部のトークン(開始タグなど)は、ストリームの終了または次のトークンが検出される前に閉じられませんでした。
- xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITY
- 定義されていないエンティティが参照されました。
- xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODING
- ドキュメントのエンコードは、Expatではサポートされていません。
- xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTION
- CDATAマークの付いたセクションは閉じられませんでした。
- xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLING
- xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONE
- パーサーは、ドキュメントがXML宣言内にあると宣言したにもかかわらず、ドキュメントが「スタンドアロン」ではないと判断し、
NotStandaloneHandler
が設定され、0
が返されました。
- xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATE
- xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PE
- xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTD
- DTDサポートをコンパイルする必要がある操作が要求されましたが、ExpatはDTDサポートなしで構成されました。 これは、 xml.parsers.expat モジュールの標準ビルドによって報告されるべきではありません。
- xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING
- 構文解析が開始される前にのみ変更できる動作の変更が、構文解析の開始後に要求されました。 これは(現在)
UseForeignDTD()
によってのみ発生します。
- xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX
- 名前空間処理が有効になっているときに、宣言されていないプレフィックスが見つかりました。
- xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX
- ドキュメントは、プレフィックスに関連付けられた名前空間宣言を削除しようとしました。
- xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE
- パラメータエンティティに不完全なマークアップが含まれていました。
- xml.parsers.expat.errors.XML_ERROR_XML_DECL
- ドキュメントにはドキュメント要素がまったく含まれていませんでした。
- xml.parsers.expat.errors.XML_ERROR_TEXT_DECL
- 外部エンティティのテキスト宣言の解析中にエラーが発生しました。
- xml.parsers.expat.errors.XML_ERROR_PUBLICID
- パブリックIDで許可されていない文字が見つかりました。
- xml.parsers.expat.errors.XML_ERROR_SUSPENDED
- 要求された操作は中断されたパーサーで行われましたが、許可されていません。 これには、追加の入力を提供したり、パーサーを停止したりする試みが含まれます。
- xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED
- パーサーが中断されていないときに、パーサーを再開しようとしました。
- xml.parsers.expat.errors.XML_ERROR_ABORTED
- これはPythonアプリケーションに報告されるべきではありません。
- xml.parsers.expat.errors.XML_ERROR_FINISHED
- 要求された操作は、入力の解析が終了したパーサーで実行されましたが、許可されていません。 これには、追加の入力を提供したり、パーサーを停止したりする試みが含まれます。
- xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE
脚注
- 1
- XML出力に含まれるエンコーディング文字列は、適切な標準に準拠している必要があります。 たとえば、「UTF-8」は有効ですが、「UTF8」は無効です。 https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EncodingDeclおよび https://www.iana.org/assignments/character-setsを参照してください。 /character-sets.xhtml。