libxml2 的一个简单测试示例
16lz
2021-01-26
libxml2是一个C语言的XML库,能简单方便的提供对XML文件的各种操作,详细的描述可以查看:http://xmlsoft.org/。
Android中该库的源码在:external\libxml2
如果是C++可以参看external\tinyxml2
以下是简单的解析xml文件代码:
xml文件如下:
<xmlinfo> <version>xmlinfo1.0version> <keyinfo>FCtuwb2LO4evFrikeyinfo> <chain> <body>MIIDgzCCAmugAwIBAgbody> <body>MIIDPDCCAiSgAwIBAbody> chain>xmlinfo>
解析代码如下:
/******************************************************************** created: 2018/09/06 filename: main.c author: Albert depend: libxml2.so build: mm purpose: parse a xml *********************************************************************/#include #include #include int main(int argc, char** argv){ xmlDocPtr doc; //定义解析文件指针 xmlNodePtr curNode; //定义结点指针,需要它在各个结点间移动 xmlChar *szKey; //临时字符串变量 char *szDocName; if (argc <= 1) { printf("Usage : %s docname \n", argv[0]); return -1; } szDocName = argv[1]; /*解析文件*/ doc = xmlParseFile(szDocName); if ( NULL == doc) { fprintf(stderr,"Document not parsed successfully. \n"); return -1; } /*确定文件根元素*/ curNode = xmlDocGetRootElement(doc); if ( NULL == curNode ) { fprintf(stderr,"empty document \n"); xmlFreeDoc(doc); return -1; } printf("curNode->name = %s \n", curNode->name); if ( xmlStrcmp( curNode->name, BAD_CAST"xmlinfo" ) ) { fprintf(stderr,"document of the wrong type, root node != xmlinfo\n"); xmlFreeDoc(doc); return -1; } curNode = curNode->children; xmlNodePtr propNodePtr = curNode; while ( curNode != NULL ) { /*取出结点中的内容*/ if ( !xmlStrcmp( curNode->name, BAD_CAST"version" ) ) { szKey = xmlNodeGetContent(curNode); printf("version: %s \n", szKey); xmlFree(szKey); } /*取出结点中的内容*/ if ( !xmlStrcmp( curNode->name, BAD_CAST"keyinfo" ) ) { szKey = xmlNodeGetContent(curNode); printf("keyinfo: %s \n", szKey); xmlFree(szKey); } /*取出结点中的内容*/ if ( !xmlStrcmp( curNode->name, BAD_CAST"chain" ) ) { propNodePtr = curNode->children; while( propNodePtr != NULL ) { /*取出结点中的内容*/ if ( !xmlStrcmp( propNodePtr->name, BAD_CAST"body" ) ) { szKey = xmlNodeGetContent(propNodePtr); printf("body: %s \n", szKey); xmlFree(szKey); } propNodePtr = propNodePtr->next; } } curNode = curNode->next; } xmlFreeDoc( doc ); return 0; }
结果如下:
curNode->name = xmlinfo
version: xmlinfo1.0
keyinfo: FCtuwb2LO4evFri
body: MIIDgzCCAmugAwIBAg
body: MIIDPDCCAiSgAwIBA
更多相关文章
- android studio 更改 app 包名和包的长度
- Android(安卓)OpenCV:读取Matlab生成的.mat文件并转换成OpenCV的M
- Android超级终端文件处理命令
- ubuntu下反翻译android apk
- Android(安卓)JNI 学习之Android.mk文件
- i.mx51开发板利用已有的镜像文件(SD卡启动)刷写Android
- 分析Cocos2d Android(安卓)项目的生成和运行
- Android(安卓)Apk 打包
- Android中application 全局变量