Expat C API¶
xml.parsers.expat モジュールは、expat_CAPI カプセルを通じて Expat の一部の関数を公開しています。
これにより、拡張モジュールで Python と同じ Expat ライブラリを使えます。
このインターフェースは pyexpat.h で宣言されています。
このヘッダは Expat の expat.h ヘッダより後にインクルードする必要があります。
-
PyExpat_CAPSULE_NAME¶
Expat C API を格納するカプセルの名前
"pyexpat.expat_CAPI"。 これをPyCapsule_Import()に渡すと、PyExpat_CAPIへのポインタを取得できます。
-
PyExpat_CAPI_MAGIC¶
PyExpat_CAPIのレイアウトを識別する文字列。 構造体内の関数ポインタを使う前に、strcmp()でmagicメンバがこの文字列と等しいことを確認し、sizeメンバが sizeof(struct PyExpat_CAPI) 以上であることを確認してください。
-
struct PyExpat_CAPI¶
xml.parsers.expatがエクスポートする関数ポインタのテーブル。 この構造体はカプセルが所有しています。 読み取り専用として扱い、解放しないでください。 テーブルの使用中は、カプセルへの強参照を保持してください。関数ポインタを使う前に、
PyExpat_CAPI_MAGICの説明に従って互換性を示すフィールドを確認してください。-
char *magic¶
インターフェースの識別子。
PyExpat_CAPI_MAGICに設定されます。
-
int size¶
構造体のサイズ (バイト単位)。 カプセルを作成した
xml.parsers.expatモジュールによってsizeof(struct PyExpat_CAPI)に設定されます。
-
int MAJOR_VERSION¶
-
int MINOR_VERSION¶
-
int MICRO_VERSION¶
xml.parsers.expatが使う Expat ライブラリのメジャー、マイナー、マイクロバージョン番号。
-
void (*SetUnknownEncodingHandler)(XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData)¶
XML_SetUnknownEncodingHandler へのポインタ。 ハンドラは失敗時に Python の例外を設定する場合があります。 呼び出し側は解析後に Python の例外の有無を確認する必要があります。
-
int (*DefaultUnknownEncodingHandler)(void *encodingHandlerData, const XML_Char *name, XML_Encoding *info)¶
XML_SetUnknownEncodingHandlerで使う、Expat の未知のエンコーディングに対応する Python のハンドラ。 Python のコーデックレジストリを使ってinfoに値を設定します。encodingHandlerData引数は使いません。 このハンドラを呼び出すには スレッド状態がアタッチされている 必要があります。
以下は、対応する Expat 関数へのポインタです。
xml.parsers.expatが使う Expat のバージョンで利用できない場合はNULLです。メンバ名では
XML_接頭辞を省略しています。 例えばSetHashSaltは Expat のXML_SetHashSalt関数を公開します。 動作と利用可能になる Expat の最小バージョンについては、Expat API リファレンス を参照してください。-
const XML_LChar *(*ErrorString)(enum XML_Error code)¶
-
enum XML_Error (*GetErrorCode)(XML_Parser parser)¶
-
XML_Size (*GetErrorColumnNumber)(XML_Parser parser)¶
-
XML_Size (*GetErrorLineNumber)(XML_Parser parser)¶
-
enum XML_Status (*Parse)(XML_Parser parser, const char *s, int len, int isFinal)¶
-
XML_Parser (*ParserCreate_MM)(const XML_Char *encoding, const XML_Memory_Handling_Suite *memsuite, const XML_Char *namespaceSeparator)¶
-
void (*ParserFree)(XML_Parser parser)¶
-
void (*SetCharacterDataHandler)(XML_Parser parser, XML_CharacterDataHandler handler)¶
-
void (*SetCommentHandler)(XML_Parser parser, XML_CommentHandler handler)¶
-
void (*SetDefaultHandlerExpand)(XML_Parser parser, XML_DefaultHandler handler)¶
-
void (*SetElementHandler)(XML_Parser parser, XML_StartElementHandler start, XML_EndElementHandler end)¶
-
void (*SetNamespaceDeclHandler)(XML_Parser parser, XML_StartNamespaceDeclHandler start, XML_EndNamespaceDeclHandler end)¶
-
void (*SetProcessingInstructionHandler)(XML_Parser parser, XML_ProcessingInstructionHandler handler)¶
-
void (*SetUserData)(XML_Parser parser, void *userData)¶
-
void (*SetStartDoctypeDeclHandler)(XML_Parser parser, XML_StartDoctypeDeclHandler start)¶
-
enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding)¶
-
int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt)¶
-
XML_Bool (*SetReparseDeferralEnabled)(XML_Parser parser, XML_Bool enabled)¶
-
XML_Bool (*SetAllocTrackerActivationThreshold)(XML_Parser parser, unsigned long long activationThresholdBytes)¶
-
XML_Bool (*SetAllocTrackerMaximumAmplification)(XML_Parser parser, float maxAmplificationFactor)¶
-
XML_Bool (*SetBillionLaughsAttackProtectionActivationThreshold)(XML_Parser parser, unsigned long long activationThresholdBytes)¶
-
XML_Bool (*SetBillionLaughsAttackProtectionMaximumAmplification)(XML_Parser parser, float maxAmplificationFactor)¶
-
XML_Bool (*SetHashSalt16Bytes)(XML_Parser parser, const uint8_t entropy[16])¶
Expat API リファレンス を参照してください。
-
char *magic¶