libxml2实现xml文档的节点的修改
2011-12-30 14:41
761 查看
其实在网上很容易能找到使用libxml2来对xml文档进行创建、解析、修改等。我着这里主要是就自己学习的libxml2修改xml文档的节点进行一个简单的总结,方便自己以后回顾。
下面给出我写的一个例子:
编译和运行格式在代码中有。
参考文章:
http://blog.sina.com.cn/s/blog_669e9f6a0100sbql.html
http://wenku.baidu.com/view/02d0fdea172ded630b1cb61c.html
博主所有文章已转自私人博客Joe
的个人博客,谢谢关注!
下面给出我写的一个例子:
/********************************************************************** Copyright, 2011, **** Tech. Co., Ltd. All Rights Reserved ----------------------------------------------------------------------- Project Code : wlan File name : modify_node.cpp Author : Sky_qing Description : 使用libxml2修改xml文档的节点 Function List: ----------------------------------------------------------------------- History: Date Author Modification 2011-12-27 Sky_qing created file **********************************************************************/ #include <stdio.h> #include "libxml/parser.h" #include "libxml/tree.h" int main(int argc, char* argv[]) { xmlDocPtr doc; //定义解析文档指针 xmlNodePtr curNode; //定义节点指针(在各个节点之间移动) char* szDocName = argv[1]; //保存xml文档名,该文档名在运行程序到时候输入。 //例如:编译格式为g++ modify_node.cpp -o modify_node -I /usr/local/include/libxml2/ -L /usr/local/lib -lxml2,生成可执行文件modify_node,运行时:./modify_node log4crc(此处log4crc为要修改的xml文档) printf("........start........\n"); doc = xmlReadFile(szDocName, "utf-8", XML_PARSE_RECOVER); //解析文档 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; } if (xmlStrcmp(curNode->name, (const xmlChar*)"log4c")) //确认根元素是否为“log4c” { fprintf(stderr, "Document of wrong type. root node != log4c"); xmlFreeDoc(doc); return -1; } curNode = curNode->xmlChildrenNode; xmlNodePtr propNode = curNode; while (NULL != curNode) //遍历所有节点 { //获取名称为category的节点 if (!xmlStrcmp(curNode->name, (const xmlChar*)"category")) { //查找带有属性name的节点 if (xmlHasProp(curNode, BAD_CAST "name")) { propNode = curNode; } //查找属性name为WLAN_Console的节点 xmlAttrPtr attrPtr = propNode->properties; while (NULL != attrPtr) //遍历所有名称为category的节点 { if (!xmlStrcmp(attrPtr->name, (const xmlChar*)"name")) //找到有name属性到节点 { //查找属性为name的值的节点 xmlChar* szPropity = xmlGetProp(propNode, (const xmlChar*)"name"); if (!xmlStrcmp((const xmlChar*)szPropity, (const xmlChar*)"WLAN_Console")) { xmlAttrPtr setAttrPtr = propNode->properties; while (NULL != setAttrPtr) { //设置属性priority的值 xmlSetProp(propNode, (const xmlChar*)"priority", (const xmlChar*)"debug"); setAttrPtr = setAttrPtr->next; } } } attrPtr = attrPtr->next; } } curNode = curNode->next; } //保存文档到原文档中 xmlSaveFile("log4crc", doc); printf("...........OK............\n"); return 0; }
编译和运行格式在代码中有。
参考文章:
http://blog.sina.com.cn/s/blog_669e9f6a0100sbql.html
http://wenku.baidu.com/view/02d0fdea172ded630b1cb61c.html
博主所有文章已转自私人博客Joe
的个人博客,谢谢关注!
相关文章推荐
- 这是一个关于XML文档的操作管理器XMLHelper类,类中包括XML文档的创建,文档节点和属性的读取,添加,修改,删除的方法功能的实现
- xStream完美转换XML、JSON xStream框架 xStream可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 前面有介
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- 【转】XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- 使用XMLBean中的XMLCursor实现对XML文档的XPath和XQuery查询和修改
- GOOGLE东西时竟然找到了一个N年前写的东东:asp语言对XML文档中指定节点文本的增加、删除、修改、查看
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- csdn 在c++ builder中,使用treeview实现对xml文档增加删除修改和查询等基本操作
- C#下通过LINQ实现对XML文档指定节点的删除操作
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- php DOM解析xml文档以及对节点增删改查实现
- 实现对Xml文档中的指定节点添加 属性和属性值
- [XML文档解析]libxml2对XML文件的创建、解析、查找、修改
- XMLHelper类 源码(XML文档帮助类,静态方法,实现对XML文档的创建,及节点和属性的增、删、改、查)
- DOM 实现Xml文档的增加,删除,修改,查询
- 使用XmlDocument创建XML文档及增加删除更新节点
- php 修改、增加xml结点属性的实现代码
- Asp.net中C#增加删除查找与修改xml文件元素节点