热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

libxml2实现xml文档的节点的修改-mysql教程

其实在网上很容易能找到使用libxml2来对xml文档进行创建、解析、修改等。我着这里主要是就自己学习的libxml2修改xml文档的节点进行一个简单的总结,方便自己以后回顾。下面给出我写的一个例子:*********************************************************

其实在网上很容易能找到使用libxml2来对xml文档进行创建、解析、修改等。我着这里主要是就自己学习的libxml2修改xml文档的节点进行一个简单的总结,方便自己以后回顾。 下面给出我写的一个例子: /*********************************************************

其实在网上很容易能找到使用libxml2来对xml文档进行创建、解析、修改等。我着这里主要是就自己学习的libxml2修改xml文档的节点进行一个简单的总结,方便自己以后回顾。

下面给出我写的一个例子:

/********************************************************************** 

                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 
#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

推荐阅读
  • 每位开发者都应该拥有一个展示自我技能与分享知识的空间——个人技术博客。本文将指导你如何使用静态网站生成器Hexo结合GitHub Pages搭建这样一个平台。 ... [详细]
  • Python作为一种广泛使用的高级编程语言,以其简洁的语法、强大的功能和丰富的库支持著称。本文将详细介绍Python的主要特点及其在现代软件开发中的应用。 ... [详细]
  • 本文将详细介绍如何使用ViewPager实现多页面滑动切换,并探讨如何去掉其默认的左右切换动画效果。ViewPager是Android开发中常用的组件之一,用于实现屏幕间的内容切换。 ... [详细]
  • 本文介绍了jQuery的基本使用方法及AJAX技术的基础知识,包括选择器、事件处理、DOM操作、动画效果等核心功能,以及如何利用AJAX实现页面的部分刷新。 ... [详细]
  • 使用Adobe Illustrator打造独特的家族徽章:牡鹿图腾设计教程
    本文详细介绍了一种基于《权力的游戏》灵感,运用Adobe Illustrator创作独特家族图腾——牡鹿徽章的方法。本教程不仅展示了具体的步骤,还提供了多种技巧,帮助读者创作出既具个人特色又符合设计原则的作品。 ... [详细]
  • 深入理解FastDFS
    FastDFS是一款高效、简洁的分布式文件系统,广泛应用于互联网应用中,用于处理大量用户上传的文件,如图片、视频等。本文探讨了FastDFS的设计理念及其如何通过独特的架构设计提高性能和可靠性。 ... [详细]
  • 首先说一下,这是我在CSDN上的第一个文章,其实这个账号早在几年前就申请了,不过当时只是为了下载一个资源,而且也不怎么懂信息技术相关的领域,后来就再也没怎么动过,直到今天我才开始使用这个账号 ... [详细]
  • 本文针对公司项目中普遍存在的IE浏览器兼容性问题,特别是IE9及以下版本,提出了具体的解决方案,确保用户在这些旧版浏览器中也能顺利实现图片上传预览功能。 ... [详细]
  • Xcode 快捷键与实用技巧
    在iOS开发过程中,熟练掌握Xcode的快捷键可以显著提升工作效率,减少不必要的鼠标操作,让开发者更加专注于代码编写。本文将介绍一些常用的Xcode快捷键及技巧,帮助开发者提高开发效率。 ... [详细]
  • 手把手教你构建简易JSON解析器
    本文将带你深入了解JSON解析器的构建过程,通过实践掌握JSON解析的基本原理。适合所有对数据解析感兴趣的开发者。 ... [详细]
  • 本文详细介绍了如何手动编写兼容IE的Ajax函数,以及探讨了跨域请求的实现方法和原理,包括JSONP和服务器端设置HTTP头部等技术。 ... [详细]
  • 使用HTML和CSS创建动态心形动画
    本文介绍了如何利用HTML与CSS3中的动画特性,特别是@keyframes规则,来创建一个动态的心形跳动效果。文章提供了详细的代码示例,并展示了最终的视觉效果。 ... [详细]
  • 转载网址:http:www.open-open.comlibviewopen1326597582452.html参考资料:http:www.cocos2d-ip ... [详细]
  • 本文档整理了公司内部常用的网站链接和重要资源路径,包括部门周报、内控报销系统、邮件服务等,同时提供了相关数据库的登录信息。 ... [详细]
  • 右下角动态通知实现
    本文介绍如何在网页中实现右下角滑动通知的功能,包括前后台代码示例及具体实现步骤。 ... [详细]
author-avatar
辛愿1346_589
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有