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) 獲取行號
Tags: comment 上下文 空間 命名 用戶
文章來源: