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

📄 xmlparse.c

📁 apache的软件linux版本
💻 C
📖 第 1 页 / 共 5 页
字号:
int XML_GetIdAttributeIndex(XML_Parser parser){  return idAttIndex;}void XML_SetElementHandler(XML_Parser parser,			   XML_StartElementHandler start,			   XML_EndElementHandler end){  startElementHandler = start;  endElementHandler = end;}void XML_SetStartElementHandler(XML_Parser parser,				XML_StartElementHandler start) {  startElementHandler = start;}void XML_SetEndElementHandler(XML_Parser parser,			      XML_EndElementHandler end) {  endElementHandler = end;}void XML_SetCharacterDataHandler(XML_Parser parser,				 XML_CharacterDataHandler handler){  characterDataHandler = handler;}void XML_SetProcessingInstructionHandler(XML_Parser parser,					 XML_ProcessingInstructionHandler handler){  processingInstructionHandler = handler;}void XML_SetCommentHandler(XML_Parser parser,			   XML_CommentHandler handler){  commentHandler = handler;}void XML_SetCdataSectionHandler(XML_Parser parser,				XML_StartCdataSectionHandler start,			        XML_EndCdataSectionHandler end){  startCdataSectionHandler = start;  endCdataSectionHandler = end;}void XML_SetStartCdataSectionHandler(XML_Parser parser,                                     XML_StartCdataSectionHandler start) {  startCdataSectionHandler = start;}void XML_SetEndCdataSectionHandler(XML_Parser parser,                                   XML_EndCdataSectionHandler end) {  endCdataSectionHandler = end;}void XML_SetDefaultHandler(XML_Parser parser,			   XML_DefaultHandler handler){  defaultHandler = handler;  defaultExpandInternalEntities = 0;}void XML_SetDefaultHandlerExpand(XML_Parser parser,				 XML_DefaultHandler handler){  defaultHandler = handler;  defaultExpandInternalEntities = 1;}void XML_SetDoctypeDeclHandler(XML_Parser parser,			       XML_StartDoctypeDeclHandler start,			       XML_EndDoctypeDeclHandler end){  startDoctypeDeclHandler = start;  endDoctypeDeclHandler = end;}void XML_SetStartDoctypeDeclHandler(XML_Parser parser,				    XML_StartDoctypeDeclHandler start) {  startDoctypeDeclHandler = start;}void XML_SetEndDoctypeDeclHandler(XML_Parser parser,				  XML_EndDoctypeDeclHandler end) {  endDoctypeDeclHandler = end;}void XML_SetUnparsedEntityDeclHandler(XML_Parser parser,				      XML_UnparsedEntityDeclHandler handler){  unparsedEntityDeclHandler = handler;}void XML_SetNotationDeclHandler(XML_Parser parser,				XML_NotationDeclHandler handler){  notationDeclHandler = handler;}void XML_SetNamespaceDeclHandler(XML_Parser parser,				 XML_StartNamespaceDeclHandler start,				 XML_EndNamespaceDeclHandler end){  startNamespaceDeclHandler = start;  endNamespaceDeclHandler = end;}void XML_SetStartNamespaceDeclHandler(XML_Parser parser,				      XML_StartNamespaceDeclHandler start) {  startNamespaceDeclHandler = start;}void XML_SetEndNamespaceDeclHandler(XML_Parser parser,				    XML_EndNamespaceDeclHandler end) {  endNamespaceDeclHandler = end;}void XML_SetNotStandaloneHandler(XML_Parser parser,				 XML_NotStandaloneHandler handler){  notStandaloneHandler = handler;}void XML_SetExternalEntityRefHandler(XML_Parser parser,				     XML_ExternalEntityRefHandler handler){  externalEntityRefHandler = handler;}void XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg){  if (arg)    externalEntityRefHandlerArg = arg;  else    externalEntityRefHandlerArg = parser;}void XML_SetUnknownEncodingHandler(XML_Parser parser,				   XML_UnknownEncodingHandler handler,				   void *data){  unknownEncodingHandler = handler;  unknownEncodingHandlerData = data;}void XML_SetElementDeclHandler(XML_Parser parser,			       XML_ElementDeclHandler eldecl){  elementDeclHandler = eldecl;}void XML_SetAttlistDeclHandler(XML_Parser parser,			       XML_AttlistDeclHandler attdecl){  attlistDeclHandler = attdecl;}void XML_SetEntityDeclHandler(XML_Parser parser,			      XML_EntityDeclHandler handler){  entityDeclHandler = handler;}void XML_SetXmlDeclHandler(XML_Parser parser,			   XML_XmlDeclHandler handler) {  xmlDeclHandler = handler;}int XML_SetParamEntityParsing(XML_Parser parser,			      enum XML_ParamEntityParsing parsing){#ifdef XML_DTD  paramEntityParsing = parsing;  return 1;#else  return parsing == XML_PARAM_ENTITY_PARSING_NEVER;#endif}int XML_Parse(XML_Parser parser, const char *s, int len, int isFinal){  if (len == 0) {    if (!isFinal)      return 1;    positionPtr = bufferPtr;    errorCode = processor(parser, bufferPtr, parseEndPtr = bufferEnd, 0);    if (errorCode == XML_ERROR_NONE)      return 1;    eventEndPtr = eventPtr;    processor = errorProcessor;    return 0;  }#ifndef XML_CONTEXT_BYTES  else if (bufferPtr == bufferEnd) {    const char *end;    int nLeftOver;    parseEndByteIndex += len;    positionPtr = s;    if (isFinal) {      errorCode = processor(parser, s, parseEndPtr = s + len, 0);      if (errorCode == XML_ERROR_NONE)	return 1;      eventEndPtr = eventPtr;      processor = errorProcessor;      return 0;    }    errorCode = processor(parser, s, parseEndPtr = s + len, &end);    if (errorCode != XML_ERROR_NONE) {      eventEndPtr = eventPtr;      processor = errorProcessor;      return 0;    }    XmlUpdatePosition(encoding, positionPtr, end, &position);    nLeftOver = s + len - end;    if (nLeftOver) {      if (buffer == 0 || nLeftOver > bufferLim - buffer) {	/* FIXME avoid integer overflow */	buffer = buffer == 0 ? MALLOC(len * 2) : REALLOC(buffer, len * 2);	/* FIXME storage leak if realloc fails */	if (!buffer) {	  errorCode = XML_ERROR_NO_MEMORY;	  eventPtr = eventEndPtr = 0;	  processor = errorProcessor;	  return 0;	}	bufferLim = buffer + len * 2;      }      memcpy(buffer, end, nLeftOver);      bufferPtr = buffer;      bufferEnd = buffer + nLeftOver;    }    return 1;  }#endif  /* not defined XML_CONTEXT_BYTES */  else {    memcpy(XML_GetBuffer(parser, len), s, len);    return XML_ParseBuffer(parser, len, isFinal);  }}int XML_ParseBuffer(XML_Parser parser, int len, int isFinal){  const char *start = bufferPtr;  positionPtr = start;  bufferEnd += len;  parseEndByteIndex += len;  errorCode = processor(parser, start, parseEndPtr = bufferEnd,			isFinal ? (const char **)0 : &bufferPtr);  if (errorCode == XML_ERROR_NONE) {    if (!isFinal)      XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position);    return 1;  }  else {    eventEndPtr = eventPtr;    processor = errorProcessor;    return 0;  }}void *XML_GetBuffer(XML_Parser parser, int len){  if (len > bufferLim - bufferEnd) {    /* FIXME avoid integer overflow */    int neededSize = len + (bufferEnd - bufferPtr);#ifdef XML_CONTEXT_BYTES    int keep = bufferPtr - buffer;    if (keep > XML_CONTEXT_BYTES)      keep = XML_CONTEXT_BYTES;    neededSize += keep;#endif  /* defined XML_CONTEXT_BYTES */    if (neededSize  <= bufferLim - buffer) {#ifdef XML_CONTEXT_BYTES      if (keep < bufferPtr - buffer) {	int offset = (bufferPtr - buffer) - keep;	memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep);	bufferEnd -= offset;	bufferPtr -= offset;      }#else      memmove(buffer, bufferPtr, bufferEnd - bufferPtr);      bufferEnd = buffer + (bufferEnd - bufferPtr);      bufferPtr = buffer;#endif  /* not defined XML_CONTEXT_BYTES */    }    else {      char *newBuf;      int bufferSize = bufferLim - bufferPtr;      if (bufferSize == 0)	bufferSize = INIT_BUFFER_SIZE;      do {	bufferSize *= 2;      } while (bufferSize < neededSize);      newBuf = MALLOC(bufferSize);      if (newBuf == 0) {	errorCode = XML_ERROR_NO_MEMORY;	return 0;      }      bufferLim = newBuf + bufferSize;#ifdef XML_CONTEXT_BYTES      if (bufferPtr) {	int keep = bufferPtr - buffer;	if (keep > XML_CONTEXT_BYTES)	  keep = XML_CONTEXT_BYTES;	memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep);	FREE(buffer);	buffer = newBuf;	bufferEnd = buffer + (bufferEnd - bufferPtr) + keep;	bufferPtr = buffer + keep;      }      else {	bufferEnd = newBuf + (bufferEnd - bufferPtr);	bufferPtr = buffer = newBuf;      }#else      if (bufferPtr) {	memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr);	FREE(buffer);      }      bufferEnd = newBuf + (bufferEnd - bufferPtr);      bufferPtr = buffer = newBuf;#endif  /* not defined XML_CONTEXT_BYTES */    }  }  return bufferEnd;}enum XML_Error XML_GetErrorCode(XML_Parser parser){  return errorCode;}long XML_GetCurrentByteIndex(XML_Parser parser){  if (eventPtr)    return parseEndByteIndex - (parseEndPtr - eventPtr);  return -1;}int XML_GetCurrentByteCount(XML_Parser parser){  if (eventEndPtr && eventPtr)    return eventEndPtr - eventPtr;  return 0;}const char * XML_GetInputContext(XML_Parser parser, int *offset, int *size){#ifdef XML_CONTEXT_BYTES  if (eventPtr && buffer) {    *offset = eventPtr - buffer;    *size   = bufferEnd - buffer;    return buffer;  }#endif /* defined XML_CONTEXT_BYTES */  return (char *) 0;}int XML_GetCurrentLineNumber(XML_Parser parser){  if (eventPtr) {    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);    positionPtr = eventPtr;  }  return position.lineNumber + 1;}int XML_GetCurrentColumnNumber(XML_Parser parser){  if (eventPtr) {    XmlUpdatePosition(encoding, positionPtr, eventPtr, &position);    positionPtr = eventPtr;  }  return position.columnNumber;}void XML_DefaultCurrent(XML_Parser parser){  if (defaultHandler) {    if (openInternalEntities)      reportDefault(parser,	            internalEncoding,		    openInternalEntities->internalEventPtr,		    openInternalEntities->internalEventEndPtr);    else      reportDefault(parser, encoding, eventPtr, eventEndPtr);  }}const XML_LChar *XML_ErrorString(int code){  static const XML_LChar *message[] = {    0,    XML_T("out of memory"),    XML_T("syntax error"),    XML_T("no element found"),    XML_T("not well-formed (invalid token)"),    XML_T("unclosed token"),    XML_T("unclosed token"),    XML_T("mismatched tag"),    XML_T("duplicate attribute"),    XML_T("junk after document element"),    XML_T("illegal parameter entity reference"),    XML_T("undefined entity"),    XML_T("recursive entity reference"),    XML_T("asynchronous entity"),    XML_T("reference to invalid character number"),    XML_T("reference to binary entity"),    XML_T("reference to external entity in attribute"),    XML_T("xml processing instruction not at start of external entity"),    XML_T("unknown encoding"),    XML_T("encoding specified in XML declaration is incorrect"),    XML_T("unclosed CDATA section"),    XML_T("error in processing external entity reference"),    XML_T("document is not standalone"),    XML_T("unexpected parser state - please send a bug report")  };  if (code > 0 && code < sizeof(message)/sizeof(message[0]))    return message[code];  return 0;}const XML_LChar *XML_ExpatVersion(void) {  return VERSION;}XML_Expat_VersionXML_ExpatVersionInfo(void) {  XML_Expat_Version version;  version.major = XML_MAJOR_VERSION;  version.minor = XML_MINOR_VERSION;  version.micro = XML_MICRO_VERSION;  return version;}staticenum XML_Error contentProcessor(XML_Parser parser,				const char *start,				const char *end,				const char **endPtr){

⌨️ 快捷键说明

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