libxml的使用(3)--编辑节点
2015-08-31 08:18
274 查看
libxml的使用(3)--编辑节点
2012-05-08 16:48 1670人阅读 评论(0) 收藏 举报apinullhtml文档
libxml读取的基本功能已经介绍过了,现在将介绍libxml编写的基本功能。
编写操作包含节点的添加,删除和修改。
对于添加,我们需要调用xmlNewTextChild函数来添加节点,需要xmlNewProp函数来添加属性。
xmlNewTextChild接受四个参数,第一个参数为新添加节点的父节点,第二个参数为新节点的命名空间namespace,第三个参数为节点的名称,第四个参数为节点的内容。函数返回指向新节点的指针xmlNodePtr。
如果要在根节点下添加一个新的节点node,他的内容设为content,则:
[html] view
plaincopyprint?
xmlDocPtr doc = NULL;
xmlNodePtr cur = NULL;
xmlNodePtr newNode = NULL;
xmlKeepBlanksDefault(0);
doc = xmlParseFile(docname);
cur = xmlDocGetRootElement(doc);
newNode = xmlNewTextChild(cur, NULL, "node", "content");
在添加后需要调用xmlSaveFormatFile函数将结果保存在硬盘上。xmlSaveFormatFile接收三个参数,第一个参数是要保存文件的文件名,第二个参数是xmlDocPtr,第三个参数是格式。如果第一个参数为“-”,结果将会输出到标准输出上。第三个参数现在没有什么研究,libxml 的 tutorial上的例子将其设为1,我就默认将其设为1了。
当然,还有多种方式可以添加一个新的node。如函数xmlAddChild,这个函数接收两个变量,第一个是父节点,第二个是新节点。这个函数在构造玩节点之后再将其添加,所以我们需要能生成节点的函数。在API文档中搜索后会发现函数xmlNewNode。这个函数接受两个变量,第一个是命名空间,第二个是节点名称。我们再调用函数xmlNodeAddContent或者xmlNodeSetContent就可以对内容进行操作了。
给新添加的节点添加属性,名称为“attr”,值为“yes”:
[cpp] view
plaincopyprint?
xmlAttrPtr newAttr = NULL;
newAttr = xmlNewProp(newNode, "attr", "yes");
对于修改和删除,API中已经很清楚地提到了这些函数。
如果你要删除node,则调用xmlReplaceNode,用NULL来替换节点。(在API当中没有发现有remove node之类的函数,不知道有没有别的办法?)
如果要修改node的name,则调用xmlNodeSetName函数。
对于属性也一样,函数都在API当中。在tree.h目录中。
相关文章推荐
- libxml的使用(2)--读取节点属性 http://blog.csdn.net/hdutigerkin/article/details/7546907
- PHP中的strtotime()对于31日求上个月有问题
- Win10《应用商店》新功能:根据设备类型查看应用评论
- libxml的使用(1)--读取xml http://blog.csdn.net/hdutigerkin/article/details/7546899
- CentOS 7下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)
- MySQL常用操作命令备忘
- Win10企业版用户量安装量曝光 付费安装已经超过150多万台
- SublimeText2常用快捷键
- 数据库设计范式
- ORA-00911: 无效字符
- 程序员的逗比瞬间
- Java面试知识点总结(4)
- CoreAnimation-05-CABasicAnimation
- Celery 和 Redis 入门
- ppptp安装脚本
- 昨晚两篇"待审核"的文章不翼而飞了
- Celery 和 Redis 入门
- 链表在计算多项式上的应用(1)
- u-boot的开机logo及显示过程
- Lua中的元表与元方法