Expat C API

ماژول xml.parsers.expat توابع منتخب Expat را از طریق کپسول expat_CAPI خود در معرض نمایش می‌گذارد. این امر به ماژول‌های توسعه‌ای اجازه می‌دهد تا از همان کتابخانه‌ی Expat پایتون استفاده کنند. این رابط در pyexpat.h اعلان می‌شود که باید پس از سرآیند expat.h مربوط به Expat گنجانده شود.

PyExpat_CAPSULE_NAME

نام کپسول حاوی Expat C API: "pyexpat.expat_CAPI". این مقدار را به PyCapsule_Import() ارسال کنید تا اشاره‌گری به یک PyExpat_CAPI به دست آورید.

PyExpat_CAPI_MAGIC

رشته‌ای که چیدمان PyExpat_CAPI را مشخص می‌کند. پیش از استفاده از اشاره‌گرهای تابع در ساختار، بررسی کنید که عضو magic آن با استفاده از strcmp() با این رشته برابر باشد و عضو 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

شماره‌های نسخه‌ی اصلی، فرعی و ریز کتابخانه‌ی Expat که توسط xml.parsers.expat استفاده می‌شود.

void (*SetUnknownEncodingHandler)(XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData)

اشاره‌گر به XML_SetUnknownEncodingHandler. هندلر ممکن است هنگام خطا یک استثنای پایتون تنظیم کند. فراخواننده باید پس از تجزیه، وجود استثنای پایتون را بررسی کند.

int (*DefaultUnknownEncodingHandler)(void *encodingHandlerData, const XML_Char *name, XML_Encoding *info)

هندلر کدگذاری نامشخص پایتون برای Expat، که با XML_SetUnknownEncodingHandler استفاده می‌شود. این هندلر از رجیستری کُدک پایتون برای پر کردن info استفاده می‌کند. آرگومان encodingHandlerData استفاده نمی‌شود. فراخوانی این هندلر نیازمند یک وضعیت نخ متصل است.

اشاره‌گرها به توابع متناظر Expat، یا NULL اگر در نسخه‌ی Expat مورد استفاده‌ی xml.parsers.expat موجود نباشند، در زیر فهرست شده‌اند.

نام اعضا پیشوند XML_ را حذف می‌کند؛ برای مثال، SetHashSalt تابع 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])

به مرجع API اکس‌پت مراجعه کنید.