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文件的创建、解析、查找、修改

项目中要实现一个管理XML文件的后台程序,需要对XML文件进行创建,解析,修改,查找等操作,下面介绍如何利用libxml2提供的库来实现上述功能。 1、创建XML文档: 我们使用xmlNewDoc()...
  • tracyjk
  • tracyjk
  • 2010年11月11日 13:29
  • 6673

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

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

libxml2库的使用例子很简单

#include #include #include #include #include int main(int argc, char *argv[]) { xmlDocPt...
  • kuenking111
  • kuenking111
  • 2015年08月22日 21:19
  • 979

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

http://blog.csdn.net/hdutigerkin/article/details/7546910 libxml读取的基本功能已经介绍过了,现在将介绍libxml编写的基本功能...
  • mulingf
  • mulingf
  • 2014年03月19日 16:56
  • 532

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

libxml的使用(3)--编辑节点 2012-05-08 16:48 1670人阅读 评论(0) 收藏 举报 apinullhtml文档 libxml读取的基本功能已经介绍...
  • wangyin159
  • wangyin159
  • 2015年08月31日 08:18
  • 298

libxml2库 读取xml文件,写xml文件

所用xml文件内容: .mp3 .mp4 .wma .mkv .avi -2852 XmlReader.h实现功能,得到一个xml...
  • peng825223208
  • peng825223208
  • 2016年08月30日 14:12
  • 1375

【C++】使用libxml解析XML文件

OpenCV中使用FileStorage创建和解析XML文件。但FileStorage不能处理节点为空的情况,且对属性也不友好。例子见这里。libxml是C接口的处理xml文件的开源代码库。...
  • xiaowei_cqu
  • xiaowei_cqu
  • 2014年01月22日 11:26
  • 7895

libxml2.7.8 c++ 解析xml文件 中文转换

C++的XML编程经验――LIBXML2库使用指南 写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML...
  • yusiguyuan
  • yusiguyuan
  • 2013年10月17日 11:37
  • 2357

iOS_导入libxml2.2框架后,找不到<libxml/tree.h>的解决办法

由于用到了第三方Html解析类库Hpple, 在导入框架libxml2.2.dylib后, 最到了XCode仍然找不到的情况, 最后解决过程如下: 1 、项目 -Targets 中的 ...
  • m18510011124
  • m18510011124
  • 2015年03月09日 11:06
  • 1031

libxml2如何解析xml格式的字符串

1.     xmlParseMemory,字符串转为XML文档 2.     xmlDocGetRootElement,获取XML文档根节点 3.     xmlStrcmp,比较XML...
  • ai2000ai
  • ai2000ai
  • 2016年06月21日 10:29
  • 1743
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:libxml的使用(2)--编辑节点
举报原因:
原因补充:

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