libxml的使用(2)--编辑节点

转载 2015年07月09日 12:04:17

libxml读取的基本功能已经介绍过了,现在将介绍libxml编写的基本功能。

编写操作包含节点的添加,删除和修改。

对于添加,我们需要调用xmlNewTextChild函数来添加节点,需要xmlNewProp函数来添加属性。

xmlNewTextChild接受四个参数,第一个参数为新添加节点的父节点,第二个参数为新节点的命名空间namespace,第三个参数为节点的名称,第四个参数为节点的内容。函数返回指向新节点的指针xmlNodePtr。

如果要在根节点下添加一个新的节点node,他的内容设为content,则:

  1. xmlDocPtr doc = NULL;  
  2. xmlNodePtr cur = NULL;  
  3. xmlNodePtr newNode = NULL;  
  4.   
  5. xmlKeepBlanksDefault(0);  
  6.   
  7. doc = xmlParseFile(docname);  
  8. cur = xmlDocGetRootElement(doc);  
  9.   
  10. newNode = xmlNewTextChild(cur, NULL, "node", "content");  

在添加后需要调用xmlSaveFormatFile函数将结果保存在硬盘上。xmlSaveFormatFile接收三个参数,第一个参数是要保存文件的文件名,第二个参数是xmlDocPtr,第三个参数是格式。如果第一个参数为“-”,结果将会输出到标准输出上。第三个参数现在没有什么研究,libxml 的 tutorial上的例子将其设为1,我就默认将其设为1了。

当然,还有多种方式可以添加一个新的node。如函数xmlAddChild,这个函数接收两个变量,第一个是父节点,第二个是新节点。这个函数在构造玩节点之后再将其添加,所以我们需要能生成节点的函数。在API文档中搜索后会发现函数xmlNewNode。这个函数接受两个变量,第一个是命名空间,第二个是节点名称。我们再调用函数xmlNodeAddContent或者xmlNodeSetContent就可以对内容进行操作了。

给新添加的节点添加属性,名称为“attr”,值为“yes”:

  1. xmlAttrPtr newAttr = NULL;  
  2. newAttr = xmlNewProp(newNode, "attr""yes");  

对于修改和删除,API中已经很清楚地提到了这些函数。

如果你要删除node,则调用xmlReplaceNode,用NULL来替换节点。(在API当中没有发现有remove node之类的函数,不知道有没有别的办法?)

如果要修改node的name,则调用xmlNodeSetName函数。

对于属性也一样,函数都在API当中。在tree.h目录中。

相关文章推荐

libxml2实现xml文档的节点的修改

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

libxml2常用函数

1.创建文件时常用的函数及其作用 创建xml文档中需要:新建文件、新建节点、设置节点内容、设置节点属性、建立节点之间的关系、保存文档等; (1)xmlNewDoc() 原型:xmlDocP...

libxml的使用(3)--编辑节点

libxml读取的基本功能已经介绍过了,现在将介绍libxml编写的基本功能。 编写操作包含节点的添加,删除和修改。 对于添加,我们需要调用xmlNewTextChild函数来添加节点,需...

c语言解析xml文档

DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。有...

通过libxml2更新XML的属性值和元素值

场景: 1.有时候配置软件的全局设置项时,需要用到键值对的存储方式。 2.配置信息不多的情况下.数据库太重量级,文本文件对utf8编码又不好,即中文内容,这时候XML文件是最佳选择。 //这里使用...

libxml的使用(2)--读取节点属性

http://blog.csdn.net/hdutigerkin/article/details/7546907 在上一篇文章当中,我读取了各个节点的名字和内容,现在我将读取各个节点的属性。 ...
  • mulingf
  • mulingf
  • 2014年03月19日 16:54
  • 956

libxml2 读取xml节点的属性

xml读取基本5个步骤: xmlDoc *doc = NULL; xmlNode *root_element = NULL; /* * this initialize the...

在xml里增加节点时添加回车(libxml2)

上一个关于libxml2的一篇文章中F. 添加属性例程代码 ,添加的keyword结点后面没有回车, 跟后面的结点挤在一行了,不是很好看。 例如,有以下的xml例子文件  1xml ve...

libxml的使用(4)--xpath搜索节点树

http://blog.csdn.net/hdutigerkin/article/details/7546912 在libxml的tutorial中介绍了一种用关键字查找节点的方法,这种方法...
  • mulingf
  • mulingf
  • 2014年03月19日 16:57
  • 566

记一次项目经历——linux环境下使用libxml2实现xml文件的生成与解析

Linux环境下配置libxml2的方法,网络上有很多,这里就不赘述了。 这里简单的记录下XML文档的生成与解析。 生成一个三级XML文档: #include #include...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:libxml的使用(2)--编辑节点
举报原因:
原因补充:

(最多只允许输入30个字)