阅读量:0
Expat是一个用于解析XML的库,它是开源的并且跨平台。在Linux中,你可以使用Expat库来解析XML文档。
下面是一个简单的示例代码,演示如何使用Expat库来解析XML文档:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include "expat.h" void start_element(void *userData, const XML_Char *name, const XML_Char **atts) { printf("Start Element: %s\n", name); } void end_element(void *userData, const XML_Char *name) { printf("End Element: %s\n", name); } void char_data(void *userData, const XML_Char *s, int len) { printf("Character Data: %.*s\n", len, s); } int main() { XML_Parser parser = XML_ParserCreate(NULL); if (parser == NULL) { printf("Error creating parser\n"); return 1; } XML_SetUserData(parser, NULL); XML_SetElementHandler(parser, start_element, end_element); XML_SetCharacterDataHandler(parser, char_data); if (XML_Parse(parser, "example.xml", strlen("example.xml"), 1) == XML_STATUS_ERROR) { printf("Error parsing XML file: %s\n", XML_ErrorString(XML_GetErrorCode(parser))); return 2; } XML_ParserFree(parser); return 0; }
在上面的示例中,我们首先包含了必要的头文件expat.h
。然后,我们定义了三个处理函数start_element
、end_element
和char_data
,分别用于处理XML元素的开始、结束和字符数据。
在main
函数中,我们使用XML_ParserCreate
函数创建一个Expat解析器。然后,我们使用XML_SetUserData
函数将用户数据设置为NULL
,使用XML_SetElementHandler
函数设置元素开始和结束的处理函数,使用XML_SetCharacterDataHandler
函数设置字符数据的处理函数。
最后,我们使用XML_Parse
函数解析XML文档,如果解析成功,则输出解析结果,否则输出错误信息。最后,我们使用XML_ParserFree
函数释放解析器。
请注意,上述示例中的example.xml
应替换为你要解析的XML文档的路径。此外,你可能需要根据你的需求修改处理函数的实现。