记一次项目经历——linux环境下使用libxml2实现xml文件的生成与解析
来源:互联网 发布:c语言循环经典编程题 编辑:程序博客网 时间:2024/05/16 07:49
Linux环境下配置libxml2的方法,网络上有很多,这里就不赘述了。
这里简单的记录下XML文档的生成与解析。
生成一个三级XML文档:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <libxml/parser.h>#include <libxml/tree.h>int main(){//定义文档指针xmlDocPtr pdoc = NULL;//定义节点指针xmlNodePtr node_root = NULL;xmlNodePtr node_father = NULL;xmlNodePtr node_son = NULL;//创建新的XML文档pdoc = xmlNewDoc(BAD_CAST "1.0");//创建节点元素node_root = xmlNewNode(NULL,BAD_CAST "root");node_father = xmlNewNode(NULL,BAD_CAST "father");node_son = xmlNewNode(NULL,BAD_CAST "son");//设置文档根节点xmlDocSetRootElement(pdoc,node_root);//添加子节点xmlAddChild(node_root,node_father);xmlAddChild(node_father,node_son);//设置节点属性xmlNewProp(node_father,BAD_CAST "name",BAD_CAST "Father");xmlNewProp(node_son,BAD_CAST "name",BAD_CAST "Son");//存储文档xmlSaveFormatFileEnc("xml_test.xml",pdoc,"UTF-8",1);//释放文档指针xmlFreeDoc(pdoc);//清理由XML库分配的内存xmlCleanupParser();//清理分配给.memorylist文件的内存块xmlMemoryDump();return 0;}结果如图:
解析该文档:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <libxml/parser.h>#include <libxml/tree.h>//临时字符串变量xmlChar *key;//实现对son节点的解析int parse_son(xmlDocPtr doc,xmlNodePtr cur){//因为接受上一级传送的cur指针,这里需要指向子节点cur = cur->xmlChildrenNode;//遍历指针while(cur!=NULL){//匹配相关字符串if((!xmlStrcmp(cur->name,BAD_CAST "son"))){//获取相关字符串属性key = xmlGetProp(cur,"name");printf("%s\n",key);xmlFree(key);}cur=cur->next;}}//实现对father节点的解析int parse_father(xmlDocPtr doc,xmlNodePtr cur){cur = cur->xmlChildrenNode;while(cur!=NULL){if((!xmlStrcmp(cur->name,BAD_CAST "father"))){key = xmlGetProp(cur,"name");printf("%s\n",key);xmlFree(key);}parse_son(doc,cur);cur=cur->next;}}int main(){//定义解析文档指针xmlDocPtr doc = NULL; //定义结点指针(你需要它为了在各个结点间移动)xmlNodePtr cur = NULL; //解析文件 doc = xmlReadFile("xml_test.xml","UTF-8",XML_PARSE_RECOVER); //确定文档根元素cur = xmlDocGetRootElement(doc); parse_father(doc,cur);//释放文件指针xmlFreeDoc(doc); return 0;}成功解析:
0 0
- 记一次项目经历——linux环境下使用libxml2实现xml文件的生成与解析
- Linux环境下C使用的XML解析库:libxml2
- Linux环境下C使用的XML解析库:libxml2
- Linux环境下C使用的XML解析库:libxml2
- linux下,eclipse开发环境,使用libxml2解析xml出现找不到头文件的解决办法
- Libxml2的学习—生成、解析xml文件
- linux下使用libxml2库,解析xml文件
- 嵌入式 Linux环境下C使用的XML解析库:libxml2
- Linux下使用libxml2解析XML配置文件
- Linux下使用LibXML2处理XML文件
- Linux下使用LibXML2处理XML文件
- linux下使用libxml2实现对xml文件的读取及查询
- Android中的XML解析与生成——Pull解析xml、实现xml文件的生成
- linux下 libxml2 xml解析
- 使用libxml2库来生成和解析xml文件
- Ubuntu下C语言使用libxml2库解析xml文件
- using libxml2连载(2 使用简介与xml tree的生成解析)
- using libxml2连载(2 使用简介与xml tree的生成解析)
- Ubuntu常用命令
- NoClassDefFoundError: org/apache/commons/logging/LogFactory
- Maven的安装、配置及使用入门
- 【checkio】House Password(初学正则表达式)
- 和屏幕相关的工具类ScreenUtils
- 记一次项目经历——linux环境下使用libxml2实现xml文件的生成与解析
- STM32 外设操作时钟注意事项
- 第一天
- android Actionbar
- 追逐自己的梦想----------辅助制作第二十九课:分析打开NPC后功能打开
- ubuntu下建立Matlab快捷方式
- SDL init failure, reason is: No available video device: On Ubuntu64
- Ubuntu14.04无法调节屏幕亮度
- 第二章作业