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

📄 parser.c

📁 xml开源解析代码.版本为libxml2-2.6.29,可支持GB3212.网络消息发送XML时很有用.
💻 C
📖 第 1 页 / 共 5 页
字号:
	    schannel = ctxt->sax->serror;    }    __xmlRaiseError(schannel,                    ctxt->vctxt.error, ctxt->vctxt.userData,                    ctxt, NULL, XML_FROM_DTD, error,                    XML_ERR_ERROR, NULL, 0, (const char *) str1,		    NULL, NULL, 0, 0,		    msg, (const char *) str1);    if (ctxt != NULL) {	ctxt->valid = 0;    }}/** * xmlFatalErrMsgInt: * @ctxt:  an XML parser context * @error:  the error number * @msg:  the error message * @val:  an integer value * * Handle a fatal parser error, i.e. violating Well-Formedness constraints */static voidxmlFatalErrMsgInt(xmlParserCtxtPtr ctxt, xmlParserErrors error,                  const char *msg, int val){    if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&        (ctxt->instate == XML_PARSER_EOF))	return;    if (ctxt != NULL)	ctxt->errNo = error;    __xmlRaiseError(NULL, NULL, NULL,                    ctxt, NULL, XML_FROM_PARSER, error, XML_ERR_FATAL,                    NULL, 0, NULL, NULL, NULL, val, 0, msg, val);    if (ctxt != NULL) {	ctxt->wellFormed = 0;	if (ctxt->recovery == 0)	    ctxt->disableSAX = 1;    }}/** * xmlFatalErrMsgStrIntStr: * @ctxt:  an XML parser context * @error:  the error number * @msg:  the error message * @str1:  an string info * @val:  an integer value * @str2:  an string info * * Handle a fatal parser error, i.e. violating Well-Formedness constraints */static voidxmlFatalErrMsgStrIntStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,                  const char *msg, const xmlChar *str1, int val, 		  const xmlChar *str2){    if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&        (ctxt->instate == XML_PARSER_EOF))	return;    if (ctxt != NULL)	ctxt->errNo = error;    __xmlRaiseError(NULL, NULL, NULL,                    ctxt, NULL, XML_FROM_PARSER, error, XML_ERR_FATAL,                    NULL, 0, (const char *) str1, (const char *) str2,		    NULL, val, 0, msg, str1, val, str2);    if (ctxt != NULL) {	ctxt->wellFormed = 0;	if (ctxt->recovery == 0)	    ctxt->disableSAX = 1;    }}/** * xmlFatalErrMsgStr: * @ctxt:  an XML parser context * @error:  the error number * @msg:  the error message * @val:  a string value * * Handle a fatal parser error, i.e. violating Well-Formedness constraints */static voidxmlFatalErrMsgStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,                  const char *msg, const xmlChar * val){    if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&        (ctxt->instate == XML_PARSER_EOF))	return;    if (ctxt != NULL)	ctxt->errNo = error;    __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL,                    XML_FROM_PARSER, error, XML_ERR_FATAL,                    NULL, 0, (const char *) val, NULL, NULL, 0, 0, msg,                    val);    if (ctxt != NULL) {	ctxt->wellFormed = 0;	if (ctxt->recovery == 0)	    ctxt->disableSAX = 1;    }}/** * xmlErrMsgStr: * @ctxt:  an XML parser context * @error:  the error number * @msg:  the error message * @val:  a string value * * Handle a non fatal parser error */static voidxmlErrMsgStr(xmlParserCtxtPtr ctxt, xmlParserErrors error,                  const char *msg, const xmlChar * val){    if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&        (ctxt->instate == XML_PARSER_EOF))	return;    if (ctxt != NULL)	ctxt->errNo = error;    __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL,                    XML_FROM_PARSER, error, XML_ERR_ERROR,                    NULL, 0, (const char *) val, NULL, NULL, 0, 0, msg,                    val);}/** * xmlNsErr: * @ctxt:  an XML parser context * @error:  the error number * @msg:  the message * @info1:  extra information string * @info2:  extra information string * * Handle a fatal parser error, i.e. violating Well-Formedness constraints */static voidxmlNsErr(xmlParserCtxtPtr ctxt, xmlParserErrors error,         const char *msg,         const xmlChar * info1, const xmlChar * info2,         const xmlChar * info3){    if ((ctxt != NULL) && (ctxt->disableSAX != 0) &&        (ctxt->instate == XML_PARSER_EOF))	return;    if (ctxt != NULL)	ctxt->errNo = error;    __xmlRaiseError(NULL, NULL, NULL, ctxt, NULL, XML_FROM_NAMESPACE, error,                    XML_ERR_ERROR, NULL, 0, (const char *) info1,                    (const char *) info2, (const char *) info3, 0, 0, msg,                    info1, info2, info3);    if (ctxt != NULL)	ctxt->nsWellFormed = 0;}/************************************************************************ *									* * 		Library wide options					* *									* ************************************************************************//**  * xmlHasFeature:  * @feature: the feature to be examined  *  * Examines if the library has been compiled with a given feature.  *  * Returns a non-zero value if the feature exist, otherwise zero.  * Returns zero (0) if the feature does not exist or an unknown  * unknown feature is requested, non-zero otherwise.  */intxmlHasFeature(xmlFeature feature){    switch (feature) {	case XML_WITH_THREAD:#ifdef LIBXML_THREAD_ENABLED	    return(1);#else	    return(0);#endif        case XML_WITH_TREE:#ifdef LIBXML_TREE_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_OUTPUT:#ifdef LIBXML_OUTPUT_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_PUSH:#ifdef LIBXML_PUSH_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_READER:#ifdef LIBXML_READER_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_PATTERN:#ifdef LIBXML_PATTERN_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_WRITER:#ifdef LIBXML_WRITER_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_SAX1:#ifdef LIBXML_SAX1_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_FTP:#ifdef LIBXML_FTP_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_HTTP:#ifdef LIBXML_HTTP_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_VALID:#ifdef LIBXML_VALID_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_HTML:#ifdef LIBXML_HTML_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_LEGACY:#ifdef LIBXML_LEGACY_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_C14N:#ifdef LIBXML_C14N_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_CATALOG:#ifdef LIBXML_CATALOG_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_XPATH:#ifdef LIBXML_XPATH_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_XPTR:#ifdef LIBXML_XPTR_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_XINCLUDE:#ifdef LIBXML_XINCLUDE_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_ICONV:#ifdef LIBXML_ICONV_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_ISO8859X:#ifdef LIBXML_ISO8859X_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_UNICODE:#ifdef LIBXML_UNICODE_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_REGEXP:#ifdef LIBXML_REGEXP_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_AUTOMATA:#ifdef LIBXML_AUTOMATA_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_EXPR:#ifdef LIBXML_EXPR_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_SCHEMAS:#ifdef LIBXML_SCHEMAS_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_SCHEMATRON:#ifdef LIBXML_SCHEMATRON_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_MODULES:#ifdef LIBXML_MODULES_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_DEBUG:#ifdef LIBXML_DEBUG_ENABLED            return(1);#else            return(0);#endif        case XML_WITH_DEBUG_MEM:#ifdef DEBUG_MEMORY_LOCATION            return(1);#else            return(0);#endif        case XML_WITH_DEBUG_RUN:#ifdef LIBXML_DEBUG_RUNTIME            return(1);#else            return(0);#endif         case XML_WITH_ZLIB:#ifdef LIBXML_ZLIB_ENABLED            return(1);#else            return(0);#endif        default:	    break;     }     return(0);}/************************************************************************ *									* * 		SAX2 defaulted attributes handling			* *									* ************************************************************************//** * xmlDetectSAX2: * @ctxt:  an XML parser context * * Do the SAX2 detection and specific intialization */static voidxmlDetectSAX2(xmlParserCtxtPtr ctxt) {    if (ctxt == NULL) return;#ifdef LIBXML_SAX1_ENABLED    if ((ctxt->sax) &&  (ctxt->sax->initialized == XML_SAX2_MAGIC) &&        ((ctxt->sax->startElementNs != NULL) ||         (ctxt->sax->endElementNs != NULL))) ctxt->sax2 = 1;#else    ctxt->sax2 = 1;#endif /* LIBXML_SAX1_ENABLED */    ctxt->str_xml = xmlDictLookup(ctxt->dict, BAD_CAST "xml", 3);    ctxt->str_xmlns = xmlDictLookup(ctxt->dict, BAD_CAST "xmlns", 5);    ctxt->str_xml_ns = xmlDictLookup(ctxt->dict, XML_XML_NAMESPACE, 36);    if ((ctxt->str_xml==NULL) || (ctxt->str_xmlns==NULL) ||     		(ctxt->str_xml_ns == NULL)) {        xmlErrMemory(ctxt, NULL);    }}typedef struct _xmlDefAttrs xmlDefAttrs;typedef xmlDefAttrs *xmlDefAttrsPtr;struct _xmlDefAttrs {    int nbAttrs;	/* number of defaulted attributes on that element */    int maxAttrs;       /* the size of the array */    const xmlChar *values[4]; /* array of localname/prefix/values */};/** * xmlAddDefAttrs: * @ctxt:  an XML parser context * @fullname:  the element fullname * @fullattr:  the attribute fullname * @value:  the attribute value * * Add a defaulted attribute for an element */static voidxmlAddDefAttrs(xmlParserCtxtPtr ctxt,               const xmlChar *fullname,               const xmlChar *fullattr,               const xmlChar *value) {    xmlDefAttrsPtr defaults;    int len;    const xmlChar *name;    const xmlChar *prefix;    if (ctxt->attsDefault == NULL) {        ctxt->attsDefault = xmlHashCreateDict(10, ctxt->dict);	if (ctxt->attsDefault == NULL)	    goto mem_error;    }    /*     * split the element name into prefix:localname , the string found     * are within the DTD and then not associated to namespace names.     */    name = xmlSplitQName3(fullname, &len);    if (name == NULL) {        name = xmlDictLookup(ctxt->dict, fullname, -1);	prefix = NULL;    } else {        name = xmlDictLookup(ctxt->dict, name, -1);	prefix = xmlDictLookup(ctxt->dict, fullname, len);    }    /*     * make sure there is some storage     */    defaults = xmlHashLookup2(ctxt->attsDefault, name, prefix);    if (defaults == NULL) {        defaults = (xmlDefAttrsPtr) xmlMalloc(sizeof(xmlDefAttrs) +	                   (4 * 4) * sizeof(const xmlChar *));	if (defaults == NULL)	    goto mem_error;

⌨️ 快捷键说明

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