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

📄 xmlparse.c

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 C
📖 第 1 页 / 共 5 页
字号:
  poolClear(&temp2Pool);  parserInit(parser, encodingName);  dtdReset(_dtd, &parser->m_mem);  return setContext(parser, implicitContext);}enum XML_StatusXML_SetEncoding(XML_Parser parser, const XML_Char *encodingName){  /* Block after XML_Parse()/XML_ParseBuffer() has been called.     XXX There's no way for the caller to determine which of the     XXX possible error cases caused the XML_STATUS_ERROR return.  */  if (parsing)    return XML_STATUS_ERROR;  if (encodingName == NULL)    protocolEncodingName = NULL;  else {    protocolEncodingName = poolCopyString(&tempPool, encodingName);    if (!protocolEncodingName)      return XML_STATUS_ERROR;  }  return XML_STATUS_OK;}XML_ParserXML_ExternalEntityParserCreate(XML_Parser oldParser,                               const XML_Char *context,                               const XML_Char *encodingName){  XML_Parser parser = oldParser;  DTD *newDtd = NULL;  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_SkippedEntityHandler oldSkippedEntityHandler = skippedEntityHandler;  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;  XML_Bool oldDefaultExpandInternalEntities = defaultExpandInternalEntities;  XML_Parser oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg;#ifdef XML_DTD  enum XML_ParamEntityParsing oldParamEntityParsing = paramEntityParsing;  int oldInEntityValue = prologState.inEntityValue;#endif  XML_Bool oldns_triplets = ns_triplets;#ifdef XML_DTD  if (!context)    newDtd = oldDtd;#endif /* XML_DTD */  /* Note that the magical uses of the pre-processor to make field     access look more like C++ require that `parser' be overwritten     here.  This makes this function more painful to follow than it     would be otherwise.  */  if (ns) {    XML_Char tmp[2];    *tmp = namespaceSeparator;    parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);  }  else {    parser = parserCreate(encodingName, &parser->m_mem, NULL, newDtd);  }  if (!parser)    return NULL;  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;  skippedEntityHandler = oldSkippedEntityHandler;  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;  parentParser = oldParser;#ifdef XML_DTD  paramEntityParsing = oldParamEntityParsing;  prologState.inEntityValue = oldInEntityValue;  if (context) {#endif /* XML_DTD */    if (!dtdCopy(_dtd, oldDtd, &parser->m_mem)      || !setContext(parser, context)) {      XML_ParserFree(parser);      return NULL;    }    processor = externalEntityInitProcessor;#ifdef XML_DTD  }  else {    /* The DTD instance referenced by _dtd is shared between the document's       root parser and external PE parsers, therefore one does not need to       call setContext. In addition, one also *must* not call setContext,       because this would overwrite existing prefix->binding pointers in       _dtd with ones that get destroyed with the external PE parser.       This would leave those prefixes with dangling pointers.    */    isParamEntity = XML_TRUE;    XmlPrologStateInitExternalEntity(&prologState);    processor = externalParEntInitProcessor;  }#endif /* XML_DTD */  return parser;}static void FASTCALLdestroyBindings(BINDING *bindings, XML_Parser parser){  for (;;) {    BINDING *b = bindings;    if (!b)      break;    bindings = b->nextTagBinding;    FREE(b->uri);    FREE(b);  }}voidXML_ParserFree(XML_Parser parser){  for (;;) {    TAG *p;    if (tagStack == NULL) {      if (freeTagList == NULL)        break;      tagStack = freeTagList;      freeTagList = NULL;    }    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  /* external parameter entity parsers share the DTD structure     parser->m_dtd with the root parser, so we must not destroy it  */  if (!isParamEntity && _dtd)#else  if (_dtd)#endif /* XML_DTD */    dtdDestroy(_dtd, (XML_Bool)!parentParser, &parser->m_mem);  FREE((void *)atts);  if (groupConnector)    FREE(groupConnector);  if (buffer)    FREE(buffer);  FREE(dataBuf);  if (unknownEncodingMem)    FREE(unknownEncodingMem);  if (unknownEncodingRelease)    unknownEncodingRelease(unknownEncodingData);  FREE(parser);}voidXML_UseParserAsHandlerArg(XML_Parser parser){  handlerArg = parser;}enum XML_ErrorXML_UseForeignDTD(XML_Parser parser, XML_Bool useDTD){#ifdef XML_DTD  /* block after XML_Parse()/XML_ParseBuffer() has been called */  if (parsing)    return XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING;  useForeignDTD = useDTD;  return XML_ERROR_NONE;#else  return XML_ERROR_FEATURE_REQUIRES_XML_DTD;#endif}voidXML_SetReturnNSTriplet(XML_Parser parser, int do_nst){  /* block after XML_Parse()/XML_ParseBuffer() has been called */  if (parsing)    return;  ns_triplets = do_nst ? XML_TRUE : XML_FALSE;}voidXML_SetUserData(XML_Parser parser, void *p){  if (handlerArg == userData)    handlerArg = userData = p;  else    userData = p;}enum XML_StatusXML_SetBase(XML_Parser parser, const XML_Char *p){  if (p) {    p = poolCopyString(&_dtd->pool, p);    if (!p)      return XML_STATUS_ERROR;    curBase = p;  }  else    curBase = NULL;  return XML_STATUS_OK;}const XML_Char *XML_GetBase(XML_Parser parser){  return curBase;}intXML_GetSpecifiedAttributeCount(XML_Parser parser){  return nSpecifiedAtts;}intXML_GetIdAttributeIndex(XML_Parser parser){  return idAttIndex;}voidXML_SetElementHandler(XML_Parser parser,                      XML_StartElementHandler start,                      XML_EndElementHandler end){  startElementHandler = start;  endElementHandler = end;}voidXML_SetStartElementHandler(XML_Parser parser,                           XML_StartElementHandler start) {  startElementHandler = start;}voidXML_SetEndElementHandler(XML_Parser parser,                         XML_EndElementHandler end) {  endElementHandler = end;}voidXML_SetCharacterDataHandler(XML_Parser parser,                            XML_CharacterDataHandler handler){  characterDataHandler = handler;}voidXML_SetProcessingInstructionHandler(XML_Parser parser,                                    XML_ProcessingInstructionHandler handler){  processingInstructionHandler = handler;}voidXML_SetCommentHandler(XML_Parser parser,                      XML_CommentHandler handler){  commentHandler = handler;}voidXML_SetCdataSectionHandler(XML_Parser parser,                           XML_StartCdataSectionHandler start,                           XML_EndCdataSectionHandler end){  startCdataSectionHandler = start;  endCdataSectionHandler = end;}voidXML_SetStartCdataSectionHandler(XML_Parser parser,                                XML_StartCdataSectionHandler start) {  startCdataSectionHandler = start;}voidXML_SetEndCdataSectionHandler(XML_Parser parser,                              XML_EndCdataSectionHandler end) {  endCdataSectionHandler = end;}voidXML_SetDefaultHandler(XML_Parser parser,                      XML_DefaultHandler handler){  defaultHandler = handler;  defaultExpandInternalEntities = XML_FALSE;}voidXML_SetDefaultHandlerExpand(XML_Parser parser,                            XML_DefaultHandler handler){  defaultHandler = handler;  defaultExpandInternalEntities = XML_TRUE;}voidXML_SetDoctypeDeclHandler(XML_Parser parser,                          XML_StartDoctypeDeclHandler start,                          XML_EndDoctypeDeclHandler end){  startDoctypeDeclHandler = start;  endDoctypeDeclHandler = end;}voidXML_SetStartDoctypeDeclHandler(XML_Parser parser,                               XML_StartDoctypeDeclHandler start) {  startDoctypeDeclHandler = start;}voidXML_SetEndDoctypeDeclHandler(XML_Parser parser,                             XML_EndDoctypeDeclHandler end) {  endDoctypeDeclHandler = end;}voidXML_SetUnparsedEntityDeclHandler(XML_Parser parser,                                 XML_UnparsedEntityDeclHandler handler){  unparsedEntityDeclHandler = handler;}voidXML_SetNotationDeclHandler(XML_Parser parser,                           XML_NotationDeclHandler handler){  notationDeclHandler = handler;}voidXML_SetNamespaceDeclHandler(XML_Parser parser,                            XML_StartNamespaceDeclHandler start,                            XML_EndNamespaceDeclHandler end){  startNamespaceDeclHandler = start;  endNamespaceDeclHandler = end;}voidXML_SetStartNamespaceDeclHandler(XML_Parser parser,                                 XML_StartNamespaceDeclHandler start) {  startNamespaceDeclHandler = start;}voidXML_SetEndNamespaceDeclHandler(XML_Parser parser,                               XML_EndNamespaceDeclHandler end) {  endNamespaceDeclHandler = end;}voidXML_SetNotStandaloneHandler(XML_Parser parser,                            XML_NotStandaloneHandler handler){  notStandaloneHandler = handler;}voidXML_SetExternalEntityRefHandler(XML_Parser parser,                                XML_ExternalEntityRefHandler handler){  externalEntityRefHandler = handler;}voidXML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg){  if (arg)    externalEntityRefHandlerArg = (XML_Parser)arg;  else    externalEntityRefHandlerArg = parser;

⌨️ 快捷键说明

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