Expat C API¶
xml.parsers.expat 모듈은 expat_CAPI 캡슐을 통해 선택된 Expat 함수들을 노출합니다. 이를 통해 확장 모듈은 Python과 동일한 Expat 라이브러리를 사용할 수 있습니다. 인터페이스는 pyexpat.h`에 선언되어 있으며, 이는 :file:`Python.h`에 포함되어 있지 않으므로 Expat의 :file:`expat.h 헤더 뒤에 포함되어야 합니다.
C API를 사용하려면 다음 코드를 확장 모듈 초기화 함수에 추가하고 C API 포인터를 모듈 상태에 저장하십시오:
struct PyExpat_CAPI *capi = NULL;
capi = (struct PyExmat_CAPI *)PyCapsule_Import(PyExpat_CAPI_NAME, 0);
if (capi == NULL) {
goto error;
}
if (!(
strcmp(capi->magic, PyExpat_CAPI_MAGIC) == 0
&& (size_t)capi->size >= sizeof(struct PyExmat_CAPI)
)) {
PyErr_SetString(PyExc_ImportError, "pyexpat version is incompatible");
goto error;
}
-
PyExpat_CAPSULE_NAME¶
Expat C API를 포함하는 캡슐의 이름은
"pyexpat.expat_CAPI"입니다. 이를PyCapsule_Import()에 전달하여PyExpat_CAPI에 대한 포인터를 얻을 수 있습니다.
-
PyExpat_CAPI_MAGIC¶
The string identifying the layout of
PyExpat_CAPI. Before using the function pointers in the structure, check that itsmagicmember compares equal to this string usingstrcmp()and itssizemember is at least 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 라이브러리의 Major, minor, micro 버전 번호이며, 각각XML_MAJOR_VERSION,XML_MINOR_VERSION,XML_MICRO_VERSION으로 설정됩니다.
-
void (*SetUnknownEncodingHandler)(XML_Parser parser, XML_UnknownEncodingHandler handler, void *encodingHandlerData)¶
XML_SetUnknownEncodingHandler 에 대한 포인터입니다.
-
int (*DefaultUnknownEncodingHandler)(void *encodingHandlerData, const XML_Char *name, XML_Encoding *info)¶
XML_SetUnknownEncodingHandler와 함께 사용되는 Expat용 파이썬 미지정 인코딩 처리기입니다. 이 핸들러는 파이썬의 코덱 레지스트리를 사용하여 info 를 채웁니다. encodingHandlerData 인수는 사용되지 않습니다. 이 핸들러를 호출하려면 attached thread state 가 필요합니다.Added in version 3.3.
해당 Expat 함수에 대한 포인터가 아래에 나열되어 있으며,
xml.parsers.expat에서 사용하는 Expat 버전에서 사용할 수 없는 경우NULL이 표시됩니다.멤버 이름은
XML_접두사를 생략합니다. 예를 들어,SetHashSalt는 Expat의XML_SetHashSalt함수를 노출합니다. 자세한 동작 방식은 Expat API reference 를 참조하십시오.-
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)¶
Added in version 3.2.
-
enum XML_Status (*SetEncoding)(XML_Parser parser, const XML_Char *encoding)¶
Added in version 3.3.
-
int (*SetHashSalt)(XML_Parser parser, unsigned long hash_salt)¶
Expat 버전 2.1.0 이전 버전에서는
NULL일 수 있습니다.Added in version 3.4.
-
XML_Bool (*SetReparseDeferralEnabled)(XML_Parser parser, XML_Bool enabled)¶
Expat 버전 2.6.0 이전 버전에서는
NULL일 수 있습니다.Added in version 3.8.
-
XML_Bool (*SetAllocTrackerActivationThreshold)(XML_Parser parser, unsigned long long activationThresholdBytes)¶
Expat 버전 2.7.2 이전 버전에서는
NULL일 수 있습니다.Added in version 3.10.
-
XML_Bool (*SetAllocTrackerMaximumAmplification)(XML_Parser parser, float maxAmplificationFactor)¶
Expat 버전 2.7.2 이전 버전에서는
NULL일 수 있습니다.Added in version 3.10.
-
XML_Bool (*SetBillionLaughsAttackProtectionActivationThreshold)(XML_Parser parser, unsigned long long activationThresholdBytes)¶
Expat 버전 2.4.0 이전 버전에서는
NULL일 수 있습니다.Added in version 3.10.
-
XML_Bool (*SetBillionLaughsAttackProtectionMaximumAmplification)(XML_Parser parser, float maxAmplificationFactor)¶
Expat 버전 2.4.0 이전 버전에서는
NULL일 수 있습니다.Added in version 3.10.
-
XML_Bool (*SetHashSalt16Bytes)(XML_Parser parser, const uint8_t entropy[16])¶
Expat 버전 2.8.0 이전 버전에서는
NULL일 수 있습니다.Added in version 3.16.
-
char *magic¶