⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlparse.cpp

📁 C++ class libraries for network-centric, portable applications, integrated perfectly with the C++ St
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#define poolFinish(pool) ((pool)->start = (pool)->ptr)#define poolAppendChar(pool, c) \  (((pool)->ptr == (pool)->end && !poolGrow(pool)) \   ? 0 \   : ((*((pool)->ptr)++ = c), 1))struct XML_ParserStruct {  /* The first member must be userData so that the XML_GetUserData     macro works. */  void *m_userData;  void *m_handlerArg;  char *m_buffer;  const XML_Memory_Handling_Suite m_mem;  /* first character to be parsed */  const char *m_bufferPtr;  /* past last character to be parsed */  char *m_bufferEnd;  /* allocated end of buffer */  const char *m_bufferLim;  XML_Index m_parseEndByteIndex;  const char *m_parseEndPtr;  XML_Char *m_dataBuf;  XML_Char *m_dataBufEnd;  XML_StartElementHandler m_startElementHandler;  XML_EndElementHandler m_endElementHandler;  XML_CharacterDataHandler m_characterDataHandler;  XML_ProcessingInstructionHandler m_processingInstructionHandler;  XML_CommentHandler m_commentHandler;  XML_StartCdataSectionHandler m_startCdataSectionHandler;  XML_EndCdataSectionHandler m_endCdataSectionHandler;  XML_DefaultHandler m_defaultHandler;  XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler;  XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler;  XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler;  XML_NotationDeclHandler m_notationDeclHandler;  XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler;  XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler;  XML_NotStandaloneHandler m_notStandaloneHandler;  XML_ExternalEntityRefHandler m_externalEntityRefHandler;  XML_Parser m_externalEntityRefHandlerArg;  XML_SkippedEntityHandler m_skippedEntityHandler;  XML_UnknownEncodingHandler m_unknownEncodingHandler;  XML_ElementDeclHandler m_elementDeclHandler;  XML_AttlistDeclHandler m_attlistDeclHandler;  XML_EntityDeclHandler m_entityDeclHandler;  XML_XmlDeclHandler m_xmlDeclHandler;  const ENCODING *m_encoding;  INIT_ENCODING m_initEncoding;  const ENCODING *m_internalEncoding;  const XML_Char *m_protocolEncodingName;  XML_Bool m_ns;  XML_Bool m_ns_triplets;  void *m_unknownEncodingMem;  void *m_unknownEncodingData;  void *m_unknownEncodingHandlerData;  void (XMLCALL *m_unknownEncodingRelease)(void *);  PROLOG_STATE m_prologState;  Processor *m_processor;  enum XML_Error m_errorCode;  const char *m_eventPtr;  const char *m_eventEndPtr;  const char *m_positionPtr;  OPEN_INTERNAL_ENTITY *m_openInternalEntities;  OPEN_INTERNAL_ENTITY *m_freeInternalEntities;  XML_Bool m_defaultExpandInternalEntities;  int m_tagLevel;  ENTITY *m_declEntity;  const XML_Char *m_doctypeName;  const XML_Char *m_doctypeSysid;  const XML_Char *m_doctypePubid;  const XML_Char *m_declAttributeType;  const XML_Char *m_declNotationName;  const XML_Char *m_declNotationPublicId;  ELEMENT_TYPE *m_declElementType;  ATTRIBUTE_ID *m_declAttributeId;  XML_Bool m_declAttributeIsCdata;  XML_Bool m_declAttributeIsId;  DTD *m_dtd;  const XML_Char *m_curBase;  TAG *m_tagStack;  TAG *m_freeTagList;  BINDING *m_inheritedBindings;  BINDING *m_freeBindingList;  int m_attsSize;  int m_nSpecifiedAtts;  int m_idAttIndex;  ATTRIBUTE *m_atts;  NS_ATT *m_nsAtts;  unsigned long m_nsAttsVersion;  unsigned char m_nsAttsPower;  POSITION m_position;  STRING_POOL m_tempPool;  STRING_POOL m_temp2Pool;  char *m_groupConnector;  unsigned int m_groupSize;  XML_Char m_namespaceSeparator;  XML_Parser m_parentParser;  XML_ParsingStatus m_parsingStatus;#ifdef XML_DTD  XML_Bool m_isParamEntity;  XML_Bool m_useForeignDTD;  enum XML_ParamEntityParsing m_paramEntityParsing;#endif};#define MALLOC(s) (parser->m_mem.malloc_fcn((s)))#define REALLOC(p,s) (parser->m_mem.realloc_fcn((p),(s)))#define FREE(p) (parser->m_mem.free_fcn((p)))#define userData (parser->m_userData)#define handlerArg (parser->m_handlerArg)#define startElementHandler (parser->m_startElementHandler)#define endElementHandler (parser->m_endElementHandler)#define characterDataHandler (parser->m_characterDataHandler)#define processingInstructionHandler \        (parser->m_processingInstructionHandler)#define commentHandler (parser->m_commentHandler)#define startCdataSectionHandler \        (parser->m_startCdataSectionHandler)#define endCdataSectionHandler (parser->m_endCdataSectionHandler)#define defaultHandler (parser->m_defaultHandler)#define startDoctypeDeclHandler (parser->m_startDoctypeDeclHandler)#define endDoctypeDeclHandler (parser->m_endDoctypeDeclHandler)#define unparsedEntityDeclHandler \        (parser->m_unparsedEntityDeclHandler)#define notationDeclHandler (parser->m_notationDeclHandler)#define startNamespaceDeclHandler \        (parser->m_startNamespaceDeclHandler)#define endNamespaceDeclHandler (parser->m_endNamespaceDeclHandler)#define notStandaloneHandler (parser->m_notStandaloneHandler)#define externalEntityRefHandler \        (parser->m_externalEntityRefHandler)#define externalEntityRefHandlerArg \        (parser->m_externalEntityRefHandlerArg)#define internalEntityRefHandler \        (parser->m_internalEntityRefHandler)#define skippedEntityHandler (parser->m_skippedEntityHandler)#define unknownEncodingHandler (parser->m_unknownEncodingHandler)#define elementDeclHandler (parser->m_elementDeclHandler)#define attlistDeclHandler (parser->m_attlistDeclHandler)#define entityDeclHandler (parser->m_entityDeclHandler)#define xmlDeclHandler (parser->m_xmlDeclHandler)#define encoding (parser->m_encoding)#define initEncoding (parser->m_initEncoding)#define internalEncoding (parser->m_internalEncoding)#define unknownEncodingMem (parser->m_unknownEncodingMem)#define unknownEncodingData (parser->m_unknownEncodingData)#define unknownEncodingHandlerData \  (parser->m_unknownEncodingHandlerData)#define unknownEncodingRelease (parser->m_unknownEncodingRelease)#define protocolEncodingName (parser->m_protocolEncodingName)#define ns (parser->m_ns)#define ns_triplets (parser->m_ns_triplets)#define prologState (parser->m_prologState)#define processor (parser->m_processor)#define errorCode (parser->m_errorCode)#define eventPtr (parser->m_eventPtr)#define eventEndPtr (parser->m_eventEndPtr)#define positionPtr (parser->m_positionPtr)#define position (parser->m_position)#define openInternalEntities (parser->m_openInternalEntities)#define freeInternalEntities (parser->m_freeInternalEntities)#define defaultExpandInternalEntities \        (parser->m_defaultExpandInternalEntities)#define tagLevel (parser->m_tagLevel)#define buffer (parser->m_buffer)#define bufferPtr (parser->m_bufferPtr)#define bufferEnd (parser->m_bufferEnd)#define parseEndByteIndex (parser->m_parseEndByteIndex)#define parseEndPtr (parser->m_parseEndPtr)#define bufferLim (parser->m_bufferLim)#define dataBuf (parser->m_dataBuf)#define dataBufEnd (parser->m_dataBufEnd)#define _dtd (parser->m_dtd)#define curBase (parser->m_curBase)#define declEntity (parser->m_declEntity)#define doctypeName (parser->m_doctypeName)#define doctypeSysid (parser->m_doctypeSysid)#define doctypePubid (parser->m_doctypePubid)#define declAttributeType (parser->m_declAttributeType)#define declNotationName (parser->m_declNotationName)#define declNotationPublicId (parser->m_declNotationPublicId)#define declElementType (parser->m_declElementType)#define declAttributeId (parser->m_declAttributeId)#define declAttributeIsCdata (parser->m_declAttributeIsCdata)#define declAttributeIsId (parser->m_declAttributeIsId)#define freeTagList (parser->m_freeTagList)#define freeBindingList (parser->m_freeBindingList)#define inheritedBindings (parser->m_inheritedBindings)#define tagStack (parser->m_tagStack)#define atts (parser->m_atts)#define attsSize (parser->m_attsSize)#define nSpecifiedAtts (parser->m_nSpecifiedAtts)#define idAttIndex (parser->m_idAttIndex)#define nsAtts (parser->m_nsAtts)#define nsAttsVersion (parser->m_nsAttsVersion)#define nsAttsPower (parser->m_nsAttsPower)#define tempPool (parser->m_tempPool)#define temp2Pool (parser->m_temp2Pool)#define groupConnector (parser->m_groupConnector)#define groupSize (parser->m_groupSize)#define namespaceSeparator (parser->m_namespaceSeparator)#define parentParser (parser->m_parentParser)#define ps_parsing (parser->m_parsingStatus.parsing)#define ps_finalBuffer (parser->m_parsingStatus.finalBuffer)#ifdef XML_DTD#define isParamEntity (parser->m_isParamEntity)#define useForeignDTD (parser->m_useForeignDTD)#define paramEntityParsing (parser->m_paramEntityParsing)#endif /* XML_DTD */XML_Parser XMLCALLXML_ParserCreate(const XML_Char *encodingName){  return XML_ParserCreate_MM(encodingName, NULL, NULL);}XML_Parser XMLCALLXML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep){  XML_Char tmp[2];  *tmp = nsSep;  return XML_ParserCreate_MM(encodingName, NULL, tmp);}static const XML_Char implicitContext[] = {  'x', 'm', 'l', '=', 'h', 't', 't', 'p', ':', '/', '/',  'w', 'w', 'w', '.', 'w', '3', '.', 'o', 'r', 'g', '/',  'X', 'M', 'L', '/', '1', '9', '9', '8', '/',  'n', 'a', 'm', 'e', 's', 'p', 'a', 'c', 'e', '\0'};XML_Parser XMLCALLXML_ParserCreate_MM(const XML_Char *encodingName,                    const XML_Memory_Handling_Suite *memsuite,                    const XML_Char *nameSep){  XML_Parser parser = parserCreate(encodingName, memsuite, nameSep, NULL);  if (parser != NULL && ns) {    /* implicit context only set for root parser, since child       parsers (i.e. external entity parsers) will inherit it    */    if (!setContext(parser, implicitContext)) {      XML_ParserFree(parser);      return NULL;    }  }  return parser;}static XML_ParserparserCreate(const XML_Char *encodingName,             const XML_Memory_Handling_Suite *memsuite,             const XML_Char *nameSep,             DTD *dtd){  XML_Parser parser;  if (memsuite) {    XML_Memory_Handling_Suite *mtemp;    parser = (XML_Parser)      memsuite->malloc_fcn(sizeof(struct XML_ParserStruct));    if (parser != NULL) {      mtemp = (XML_Memory_Handling_Suite *)&(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 = (XML_Parser)malloc(sizeof(struct XML_ParserStruct));    if (parser != NULL) {      mtemp = (XML_Memory_Handling_Suite *)&(parser->m_mem);      mtemp->malloc_fcn = malloc;      mtemp->realloc_fcn = realloc;      mtemp->free_fcn = free;    }  }  if (!parser)    return parser;  buffer = NULL;  bufferLim = NULL;  attsSize = INIT_ATTS_SIZE;  atts = (ATTRIBUTE *)MALLOC(attsSize * sizeof(ATTRIBUTE));  if (atts == NULL) {    FREE(parser);    return NULL;  }  dataBuf = (XML_Char *)MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char));  if (dataBuf == NULL) {    FREE(atts);    FREE(parser);    return NULL;  }  dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE;  if (dtd)    _dtd = dtd;  else {    _dtd = dtdCreate(&parser->m_mem);    if (_dtd == NULL) {      FREE(dataBuf);      FREE(atts);      FREE(parser);      return NULL;    }  }  freeBindingList = NULL;  freeTagList = NULL;  freeInternalEntities = NULL;  groupSize = 0;  groupConnector = NULL;  unknownEncodingHandler = NULL;  unknownEncodingHandlerData = NULL;  namespaceSeparator = '!';  ns = XML_FALSE;  ns_triplets = XML_FALSE;  nsAtts = NULL;  nsAttsVersion = 0;  nsAttsPower = 0;  poolInit(&tempPool, &(parser->m_mem));  poolInit(&temp2Pool, &(parser->m_mem));  parserInit(parser, encodingName);  if (encodingName && !protocolEncodingName) {    XML_ParserFree(parser);    return NULL;  }  if (nameSep) {    ns = XML_TRUE;    internalEncoding = XmlGetInternalEncodingNS();    namespaceSeparator = *nameSep;  }  else {    internalEncoding = XmlGetInternalEncoding();  }  return parser;}static voidparserInit(XML_Parser parser, const XML_Char *encodingName){  processor = prologInitProcessor;  XmlPrologStateInit(&prologState);  protocolEncodingName = (encodingName != NULL                          ? poolCopyString(&tempPool, encodingName)                          : NULL);  curBase = NULL;  XmlInitEncoding(&initEncoding, &encoding, 0);  userData = NULL;  handlerArg = NULL;  startElementHandler = NULL;  endElementHandler = NULL;  characterDataHandler = NULL;  processingInstructionHandler = NULL;  commentHandler = NULL;  startCdataSectionHandler = NULL;  endCdataSectionHandler = NULL;  defaultHandler = NULL;  startDoctypeDeclHandler = NULL;  endDoctypeDeclHandler = NULL;  unparsedEntityDeclHandler = NULL;  notationDeclHandler = NULL;  startNamespaceDeclHandler = NULL;  endNamespaceDeclHandler = NULL;  notStandaloneHandler = NULL;  externalEntityRefHandler = NULL;  externalEntityRefHandlerArg = parser;  skippedEntityHandler = NULL;  elementDeclHandler = NULL;  attlistDeclHandler = NULL;  entityDeclHandler = NULL;  xmlDeclHandler = NULL;  bufferPtr = buffer;  bufferEnd = buffer;  parseEndByteIndex = 0;  parseEndPtr = NULL;  declElementType = NULL;  declAttributeId = NULL;  declEntity = NULL;  doctypeName = NULL;  doctypeSysid = NULL;  doctypePubid = NULL;  declAttributeType = NULL;  declNotationName = NULL;  declNotationPublicId = NULL;  declAttributeIsCdata = XML_FALSE;  declAttributeIsId = XML_FALSE;  memset(&position, 0, sizeof(POSITION));  errorCode = XML_ERROR_NONE;  eventPtr = NULL;  eventEndPtr = NULL;  positionPtr = NULL;  openInternalEntities = NULL;  defaultExpandInternalEntities = XML_TRUE;  tagLevel = 0;  tagStack = NULL;  inheritedBindings = NULL;  nSpecifiedAtts = 0;  unknownEncodingMem = NULL;  unknownEncodingRelease = NULL;  unknownEncodingData = NULL;  parentParser = NULL;  ps_parsing = XML_INITIALIZED;#ifdef XML_DTD  isParamEntity = XML_FALSE;  useForeignDTD = XML_FALSE;  paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER;#endif}/* moves list of bindings to freeBindingList */static void FASTCALLmoveToFreeBindingList(XML_Parser parser, BINDING *bindings){  while (bindings) {    BINDING *b = bindings;    bindings = bindings->nextTagBinding;    b->nextTagBinding = freeBindingList;    freeBindingList = b;  }}XML_Bool XMLCALLXML_ParserReset(XML_Parser parser, const XML_Char *encodingName){  TAG *tStk;  OPEN_INTERNAL_ENTITY *openEntityList;  if (parentParser)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -