📄 xmlparse.c
字号:
#define defaultHandler (((Parser *)parser)->m_defaultHandler)#define startDoctypeDeclHandler (((Parser *)parser)->m_startDoctypeDeclHandler)#define endDoctypeDeclHandler (((Parser *)parser)->m_endDoctypeDeclHandler)#define unparsedEntityDeclHandler (((Parser *)parser)->m_unparsedEntityDeclHandler)#define notationDeclHandler (((Parser *)parser)->m_notationDeclHandler)#define startNamespaceDeclHandler (((Parser *)parser)->m_startNamespaceDeclHandler)#define endNamespaceDeclHandler (((Parser *)parser)->m_endNamespaceDeclHandler)#define notStandaloneHandler (((Parser *)parser)->m_notStandaloneHandler)#define externalEntityRefHandler (((Parser *)parser)->m_externalEntityRefHandler)#define externalEntityRefHandlerArg (((Parser *)parser)->m_externalEntityRefHandlerArg)#define unknownEncodingHandler (((Parser *)parser)->m_unknownEncodingHandler)#define elementDeclHandler (((Parser *)parser)->m_elementDeclHandler)#define attlistDeclHandler (((Parser *)parser)->m_attlistDeclHandler)#define entityDeclHandler (((Parser *)parser)->m_entityDeclHandler)#define xmlDeclHandler (((Parser *)parser)->m_xmlDeclHandler)#define encoding (((Parser *)parser)->m_encoding)#define initEncoding (((Parser *)parser)->m_initEncoding)#define internalEncoding (((Parser *)parser)->m_internalEncoding)#define unknownEncodingMem (((Parser *)parser)->m_unknownEncodingMem)#define unknownEncodingData (((Parser *)parser)->m_unknownEncodingData)#define unknownEncodingHandlerData \ (((Parser *)parser)->m_unknownEncodingHandlerData)#define unknownEncodingRelease (((Parser *)parser)->m_unknownEncodingRelease)#define protocolEncodingName (((Parser *)parser)->m_protocolEncodingName)#define ns (((Parser *)parser)->m_ns)#define ns_triplets (((Parser *)parser)->m_ns_triplets)#define prologState (((Parser *)parser)->m_prologState)#define processor (((Parser *)parser)->m_processor)#define errorCode (((Parser *)parser)->m_errorCode)#define eventPtr (((Parser *)parser)->m_eventPtr)#define eventEndPtr (((Parser *)parser)->m_eventEndPtr)#define positionPtr (((Parser *)parser)->m_positionPtr)#define position (((Parser *)parser)->m_position)#define openInternalEntities (((Parser *)parser)->m_openInternalEntities)#define defaultExpandInternalEntities (((Parser *)parser)->m_defaultExpandInternalEntities)#define tagLevel (((Parser *)parser)->m_tagLevel)#define buffer (((Parser *)parser)->m_buffer)#define bufferPtr (((Parser *)parser)->m_bufferPtr)#define bufferEnd (((Parser *)parser)->m_bufferEnd)#define parseEndByteIndex (((Parser *)parser)->m_parseEndByteIndex)#define parseEndPtr (((Parser *)parser)->m_parseEndPtr)#define bufferLim (((Parser *)parser)->m_bufferLim)#define dataBuf (((Parser *)parser)->m_dataBuf)#define dataBufEnd (((Parser *)parser)->m_dataBufEnd)#define dtd (((Parser *)parser)->m_dtd)#define curBase (((Parser *)parser)->m_curBase)#define declEntity (((Parser *)parser)->m_declEntity)#define doctypeName (((Parser *)parser)->m_doctypeName)#define doctypeSysid (((Parser *)parser)->m_doctypeSysid)#define doctypePubid (((Parser *)parser)->m_doctypePubid)#define declAttributeType (((Parser *)parser)->m_declAttributeType)#define declNotationName (((Parser *)parser)->m_declNotationName)#define declNotationPublicId (((Parser *)parser)->m_declNotationPublicId)#define declElementType (((Parser *)parser)->m_declElementType)#define declAttributeId (((Parser *)parser)->m_declAttributeId)#define declAttributeIsCdata (((Parser *)parser)->m_declAttributeIsCdata)#define declAttributeIsId (((Parser *)parser)->m_declAttributeIsId)#define freeTagList (((Parser *)parser)->m_freeTagList)#define freeBindingList (((Parser *)parser)->m_freeBindingList)#define inheritedBindings (((Parser *)parser)->m_inheritedBindings)#define tagStack (((Parser *)parser)->m_tagStack)#define atts (((Parser *)parser)->m_atts)#define attsSize (((Parser *)parser)->m_attsSize)#define nSpecifiedAtts (((Parser *)parser)->m_nSpecifiedAtts)#define idAttIndex (((Parser *)parser)->m_idAttIndex)#define tempPool (((Parser *)parser)->m_tempPool)#define temp2Pool (((Parser *)parser)->m_temp2Pool)#define groupConnector (((Parser *)parser)->m_groupConnector)#define groupSize (((Parser *)parser)->m_groupSize)#define hadExternalDoctype (((Parser *)parser)->m_hadExternalDoctype)#define namespaceSeparator (((Parser *)parser)->m_namespaceSeparator)#ifdef XML_DTD#define parentParser (((Parser *)parser)->m_parentParser)#define paramEntityParsing (((Parser *)parser)->m_paramEntityParsing)#endif /* XML_DTD */#ifdef COMPILED_FROM_DSPBOOL WINAPI DllMain(HINSTANCE h, DWORD r, LPVOID p) { return TRUE;}#endif /* def COMPILED_FROM_DSP */#ifdef _MSC_VER#ifdef _DEBUGParser *asParser(XML_Parser parser){ return parser;}#endif#endifXML_Parser XML_ParserCreate(const XML_Char *encodingName){ return XML_ParserCreate_MM(encodingName, NULL, NULL);}XML_Parser XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep){ XML_Char tmp[2]; *tmp = nsSep; return XML_ParserCreate_MM(encodingName, NULL, tmp);}XML_ParserXML_ParserCreate_MM(const XML_Char *encodingName, const XML_Memory_Handling_Suite *memsuite, const XML_Char *nameSep) { XML_Parser parser; static const XML_Char implicitContext[] = { XML_T('x'), XML_T('m'), XML_T('l'), XML_T('='), XML_T('h'), XML_T('t'), XML_T('t'), XML_T('p'), XML_T(':'), XML_T('/'), XML_T('/'), XML_T('w'), XML_T('w'), XML_T('w'), XML_T('.'), XML_T('w'), XML_T('3'), XML_T('.'), XML_T('o'), XML_T('r'), XML_T('g'), XML_T('/'), XML_T('X'), XML_T('M'), XML_T('L'), XML_T('/'), XML_T('1'), XML_T('9'), XML_T('9'), XML_T('8'), XML_T('/'), XML_T('n'), XML_T('a'), XML_T('m'), XML_T('e'), XML_T('s'), XML_T('p'), XML_T('a'), XML_T('c'), XML_T('e'), XML_T('\0') }; if (memsuite) { XML_Memory_Handling_Suite *mtemp; parser = memsuite->malloc_fcn(sizeof(Parser)); mtemp = &(((Parser *) parser)->m_mem); mtemp->malloc_fcn = memsuite->malloc_fcn; mtemp->realloc_fcn = memsuite->realloc_fcn; mtemp->free_fcn = memsuite->free_fcn; } else { XML_Memory_Handling_Suite *mtemp; parser = malloc(sizeof(Parser)); mtemp = &(((Parser *) parser)->m_mem); mtemp->malloc_fcn = malloc; mtemp->realloc_fcn = realloc; mtemp->free_fcn = free; } if (!parser) return parser; processor = prologInitProcessor; XmlPrologStateInit(&prologState); userData = 0; handlerArg = 0; startElementHandler = 0; endElementHandler = 0; characterDataHandler = 0; processingInstructionHandler = 0; commentHandler = 0; startCdataSectionHandler = 0; endCdataSectionHandler = 0; defaultHandler = 0; startDoctypeDeclHandler = 0; endDoctypeDeclHandler = 0; unparsedEntityDeclHandler = 0; notationDeclHandler = 0; startNamespaceDeclHandler = 0; endNamespaceDeclHandler = 0; notStandaloneHandler = 0; externalEntityRefHandler = 0; externalEntityRefHandlerArg = parser; unknownEncodingHandler = 0; elementDeclHandler = 0; attlistDeclHandler = 0; entityDeclHandler = 0; xmlDeclHandler = 0; buffer = 0; bufferPtr = 0; bufferEnd = 0; parseEndByteIndex = 0; parseEndPtr = 0; bufferLim = 0; declElementType = 0; declAttributeId = 0; declEntity = 0; doctypeName = 0; doctypeSysid = 0; doctypePubid = 0; declAttributeType = 0; declNotationName = 0; declNotationPublicId = 0; memset(&position, 0, sizeof(POSITION)); errorCode = XML_ERROR_NONE; eventPtr = 0; eventEndPtr = 0; positionPtr = 0; openInternalEntities = 0; tagLevel = 0; tagStack = 0; freeTagList = 0; freeBindingList = 0; inheritedBindings = 0; attsSize = INIT_ATTS_SIZE; atts = MALLOC(attsSize * sizeof(ATTRIBUTE)); nSpecifiedAtts = 0; dataBuf = MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); groupSize = 0; groupConnector = 0; hadExternalDoctype = 0; unknownEncodingMem = 0; unknownEncodingRelease = 0; unknownEncodingData = 0; unknownEncodingHandlerData = 0; namespaceSeparator = '!';#ifdef XML_DTD parentParser = 0; paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;#endif ns = 0; ns_triplets = 0; poolInit(&tempPool, &(((Parser *) parser)->m_mem)); poolInit(&temp2Pool, &(((Parser *) parser)->m_mem)); protocolEncodingName = encodingName ? poolCopyString(&tempPool, encodingName) : 0; curBase = 0; if (!dtdInit(&dtd, parser) || !atts || !dataBuf || (encodingName && !protocolEncodingName)) { XML_ParserFree(parser); return 0; } dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; if (nameSep) { XmlInitEncodingNS(&initEncoding, &encoding, 0); ns = 1; internalEncoding = XmlGetInternalEncodingNS(); namespaceSeparator = *nameSep; if (! setContext(parser, implicitContext)) { XML_ParserFree(parser); return 0; } } else { XmlInitEncoding(&initEncoding, &encoding, 0); internalEncoding = XmlGetInternalEncoding(); } return parser;} /* End XML_ParserCreate_MM */int XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName){ if (!encodingName) protocolEncodingName = 0; else { protocolEncodingName = poolCopyString(&tempPool, encodingName); if (!protocolEncodingName) return 0; } return 1;}XML_Parser XML_ExternalEntityParserCreate(XML_Parser oldParser, const XML_Char *context, const XML_Char *encodingName){ XML_Parser parser = oldParser; DTD *oldDtd = &dtd; XML_StartElementHandler oldStartElementHandler = startElementHandler; XML_EndElementHandler oldEndElementHandler = endElementHandler; XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; XML_ProcessingInstructionHandler oldProcessingInstructionHandler = processingInstructionHandler; XML_CommentHandler oldCommentHandler = commentHandler; XML_StartCdataSectionHandler oldStartCdataSectionHandler = startCdataSectionHandler; XML_EndCdataSectionHandler oldEndCdataSectionHandler = endCdataSectionHandler; XML_DefaultHandler oldDefaultHandler = defaultHandler; XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler = unparsedEntityDeclHandler; XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler = startNamespaceDeclHandler; XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler = endNamespaceDeclHandler; XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; XML_ExternalEntityRefHandler oldExternalEntityRefHandler = externalEntityRefHandler; XML_UnknownEncodingHandler oldUnknownEncodingHandler = unknownEncodingHandler; XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; ELEMENT_TYPE * oldDeclElementType = declElementType; void *oldUserData = userData; void *oldHandlerArg = handlerArg; int oldDefaultExpandInternalEntities = defaultExpandInternalEntities; void *oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg;#ifdef XML_DTD int oldParamEntityParsing = paramEntityParsing;#endif int oldns_triplets = ns_triplets; if (ns) { XML_Char tmp[2]; *tmp = namespaceSeparator; parser = XML_ParserCreate_MM(encodingName, &((Parser *)parser)->m_mem, tmp); } else { parser = XML_ParserCreate_MM(encodingName, &((Parser *)parser)->m_mem, NULL); } if (!parser) return 0; startElementHandler = oldStartElementHandler; endElementHandler = oldEndElementHandler; characterDataHandler = oldCharacterDataHandler; processingInstructionHandler = oldProcessingInstructionHandler; commentHandler = oldCommentHandler; startCdataSectionHandler = oldStartCdataSectionHandler; endCdataSectionHandler = oldEndCdataSectionHandler; defaultHandler = oldDefaultHandler; unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; notationDeclHandler = oldNotationDeclHandler; startNamespaceDeclHandler = oldStartNamespaceDeclHandler; endNamespaceDeclHandler = oldEndNamespaceDeclHandler; notStandaloneHandler = oldNotStandaloneHandler; externalEntityRefHandler = oldExternalEntityRefHandler; unknownEncodingHandler = oldUnknownEncodingHandler; elementDeclHandler = oldElementDeclHandler; attlistDeclHandler = oldAttlistDeclHandler; entityDeclHandler = oldEntityDeclHandler; xmlDeclHandler = oldXmlDeclHandler; declElementType = oldDeclElementType; userData = oldUserData; if (oldUserData == oldHandlerArg) handlerArg = userData; else handlerArg = parser; if (oldExternalEntityRefHandlerArg != oldParser) externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; defaultExpandInternalEntities = oldDefaultExpandInternalEntities; ns_triplets = oldns_triplets;#ifdef XML_DTD paramEntityParsing = oldParamEntityParsing; if (context) {#endif /* XML_DTD */ if (!dtdCopy(&dtd, oldDtd, parser) || !setContext(parser, context)) { XML_ParserFree(parser); return 0; } processor = externalEntityInitProcessor;#ifdef XML_DTD } else { dtdSwap(&dtd, oldDtd); parentParser = oldParser; XmlPrologStateInitExternalEntity(&prologState); dtd.complete = 1; hadExternalDoctype = 1; }#endif /* XML_DTD */ return parser;}staticvoid destroyBindings(BINDING *bindings, XML_Parser parser){ for (;;) { BINDING *b = bindings; if (!b) break; bindings = b->nextTagBinding; FREE(b->uri); FREE(b); }}void XML_ParserFree(XML_Parser parser){ for (;;) { TAG *p; if (tagStack == 0) { if (freeTagList == 0) break; tagStack = freeTagList; freeTagList = 0; } p = tagStack; tagStack = tagStack->parent; FREE(p->buf); destroyBindings(p->bindings, parser); FREE(p); } destroyBindings(freeBindingList, parser); destroyBindings(inheritedBindings, parser); poolDestroy(&tempPool); poolDestroy(&temp2Pool);#ifdef XML_DTD if (parentParser) { if (hadExternalDoctype) dtd.complete = 0; dtdSwap(&dtd, &((Parser *)parentParser)->m_dtd); }#endif /* XML_DTD */ dtdDestroy(&dtd, parser); FREE((void *)atts); if (groupConnector) FREE(groupConnector); if (buffer) FREE(buffer); FREE(dataBuf); if (unknownEncodingMem) FREE(unknownEncodingMem); if (unknownEncodingRelease) unknownEncodingRelease(unknownEncodingData); FREE(parser);}void XML_UseParserAsHandlerArg(XML_Parser parser){ handlerArg = parser;}voidXML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { ns_triplets = do_nst;}void XML_SetUserData(XML_Parser parser, void *p){ if (handlerArg == userData) handlerArg = userData = p; else userData = p;}int XML_SetBase(XML_Parser parser, const XML_Char *p){ if (p) { p = poolCopyString(&dtd.pool, p); if (!p) return 0; curBase = p; } else curBase = 0; return 1;}const XML_Char *XML_GetBase(XML_Parser parser){ return curBase;}int XML_GetSpecifiedAttributeCount(XML_Parser parser){ return nSpecifiedAtts;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -