expat用法 expat.h 五个回调函数 userdata都是自定义参数,一般应该用户传入上下文参数 //开始命名空间 static void XMLCALL startNamespaceHandler(void* userData, const char* prefix, const char* uri); //开始Element节点,也就是<xxx static void XMLCALL startElementHandler(void* userData, const char* name, const char** attrs); //解析到文本>xxx< static void XMLCALL characterDataHandler(void* userData, const char* s, int len); //结束Element static void XMLCALL endElementHandler(void* userData, const char* name); //结束 Namespace static void XMLCALL endNamespaceHandler(void* userData, const char* prefix); // 注释 static void XMLCALL commentDataHandler(void* userData, const char* comment); 1 初始化 //初始化函数 参数1 编码 2 命名空间分隔符 XML_ParserCreateNS(nullptr, kXmlNamespaceSep); 2 设置回调函数 mParser 为第一步创建的解析对象 XML_SetUserData(mParser, this); //第一个参数都是回调函数中传出的userDat XML_SetElementHandler(mParser, startElementHandler, endElementHandler); XML_SetNamespaceDeclHandler(mParser, startNamespaceHandler, endNamespaceHandler); XML_SetCharacterDataHandler(mParser, characterDataHandler); XML_SetCommentHandler(mParser, commentDataHandler); 3 XML_Parse(mParser, mBuffer, mIn.gcount(), done) 解析 4 结束调用函数 XML_ParserFree(mParser); 释放资源 5 其他 XML_STATUS_ERROR 解析出错返回值 XML_ErrorString(XML_GetErrorCode(mParser)); 出错信息 XML_GetCurrentLineNumber(mParser) 获取行号
expat解析xml
最新推荐文章于 2024-06-25 08:22:01 发布