Expat C API¶
pyexpat exposes a C interface for extension modules.
Consumers must include the header file :file:`pyexpat.h (which is not
included by default by Python.h) and expat.h for Expat.
To use the C API, consider adding the following code in your extension module initilisation function and store the pointer to the C API in the module state:
struct PyExpat_CAPI *capi = NULL;
capi = (struct PyExpat_CAPI *)PyCapsule_Import(PyExpat_CAPSULE_NAME, 0);
if (capi == NULL) {
goto error;
}
if (!PyExpat_CheckCompatibility(capi)) {
PyErr_SetString(PyExc_ImportError, "pyexpat version is incompatible");
goto error;
}
-
int PyExpat_CheckCompatibility(struct PyExpat_CAPI *api)¶
Return
1if api is compatible with the linked Expat library, and0otherwise. This function never sets a Python exception.api must not be
NULL.Added in version 3.15.0a1 (unreleased).
-
PyExpat_CAPI_MAGIC¶
The Expat C API magic number.
-
PyExpat_CAPSULE_NAME¶
The Expat C API capsule name to import via
PyCapsule_Import().
-
struct PyExpat_CAPI¶
The Expat C API structure.
-
char *magic¶
Set to
PyExpat_CAPI_MAGIC.
-
int size¶
Set to
sizeof(struct PyExpat_CAPI).
-
int MAJOR_VERSION¶
-
int MINOR_VERSION¶
-
int MICRO_VERSION¶
Set to
XML_MAJOR_VERSION,XML_MINOR_VERSION, andXML_MICRO_VERSIONrespectively of the linked Expat library.
The following members expose the C API as provided by Expat. See the official documentation for details (some names may slightly differ but the signature and intent will not).
-
const XML_LChar *(*ErrorString)(enum XML_Error errno)¶
-
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 *sep)¶
-
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 (*SetUnknownEncodingHandler)(XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData)¶
-
void (*SetUserData)(XML_Parser parser, void *userData)¶
-
void (*SetStartDoctypeDeclHandler)(XML_Parser parser, XML_StartDoctypeDeclHandler start)¶
Added in version 3.2.
-
enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding)¶
Added in version 3.3.
-
int (*DefaultUnknownEncodingHandler)(void *encodingHandlerData, const XML_Char *name, XML_Encoding *info)¶
Added in version 3.3.
-
int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt)¶
Might be NULL for Expat versions prior to 2.1.0.
Added in version 3.4.
-
XML_Bool (*SetReparseDeferralEnabled)(XML_Parser parser, XML_Bool enabled)¶
Might be NULL for Expat versions prior to 2.6.0.
Added in version 3.8.
-
XML_Bool (*SetAllocTrackerActivationThreshold)(XML_Parser parser, unsigned long long activationThresholdBytes)¶
Might be NULL for Expat versions prior to 2.7.2.
Added in version 3.10.
-
XML_Bool (*SetAllocTrackerMaximumAmplification)(XML_Parser parser, float maxAmplificationFactor)¶
Might be NULL for Expat versions prior to 2.7.2.
Added in version 3.10.
-
XML_Bool (*SetBillionLaughsAttackProtectionActivationThreshold)(XML_Parser parser, unsigned long long activationThresholdBytes)¶
Might be NULL for Expat versions prior to 2.4.0.
Added in version 3.10.
-
XML_Bool (*SetBillionLaughsAttackProtectionMaximumAmplification)(XML_Parser parser, float maxAmplificationFactor)¶
Might be NULL for Expat versions prior to 2.4.0.
Added in version 3.10.
-
char *magic¶