libxml的使用 编辑节点
libxml读取的基本功能已经介绍过了,现在将介绍libxml编写的基本功能。
编写操作包含节点的添加,删除和修改。
对于添加,我们需要调用xmlNewTextChild函数来添加节点,需要xmlNewProp函数来添加属性。
xmlNewTextChild接受四个参数,第一个参数为新添加节点的父节点,第二个参数为新节点的命名空间namespace,第三个参数为节点的名称,第四个参数为节点的内容。函数返回指向新节点的指针xmlNodePtr。
如果要在根节点下添加一个新的节点node,他的内容设为content,则:
- 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”:
- xmlAttrPtr newAttr = NULL;
- newAttr = xmlNewProp(newNode, "attr", "yes");
对于修改和删除,API中已经很清楚地提到了这些函数。
如果你要删除node,则调用xmlReplaceNode,用NULL来替换节点。(在API当中没有发现有remove node之类的函数,不知道有没有别的办法?)
如果要修改node的name,则调用xmlNodeSetName函数。
对于属性也一样,函数都在API当中。在tree.h目录中。
libxml的使用 编辑节点的更多相关文章
- C# 运行时编辑 节点重命名
方法一: ; bool nodeChanged = false; //右键点击,就进入修改状态 private void treeView1_NodeMouseClick(object sender, ...
- 转:zTree高级入门:如何通过扩展节点的属性来达到是否显示节点的删除编辑等图标(按钮)
当我们在使用ztree树组件的节点编辑功能时,只要我们引入了ztree相关节点编辑的js脚本文件: <script type="text/javascript" src=”/ ...
- 【jquery】【ztree】节点添加自定义按钮、编辑和删除事件改成自己定义事件
setting添加 edit: { drag: { isCopy: false, isMove: true }, enable: true,//设置是否处于编辑状态 showRemoveBtn: sh ...
- Delphi Treeview 用法(概念、属性、添加编辑插入节点、定位节点、拖拽等)
今天再细研究了一下Treeview的用法,网上虽然总结了很多,但是还是有很多节点没有讲到了,也给使用中遇到很多问题.特地总结一下: 1.概念 Treeview用于显示按照树形结构进行组织的数据.Tre ...
- [译]Godot系列教程一 - 场景与节点
场景(Scene)与节点(Node) 简介 先设想有那么一瞬间你自己不再是一名游戏开发者了,而是一名大厨! 你的装备换成了一套大厨的制服.不要考虑制作游戏的事情,你现在的职责是为你的顾客创建新的可口的 ...
- ArcGIS API for Silverlight 编辑Geometry
概述 ArcMap的编辑功能是非常强大的,ArcEngine编写的CS程序也可以用到ArcMap中提供的编辑功能,那么ArcGIS API forSilverlight针对Geometry的编辑提供了 ...
- WINFORM中treeview 节点显示不全
在设置treeview节点时,出现如下显示不全的问题: 这个问题是由于我们在treeview任务中编辑节点时设置的字体大于我们在treeview属性中设置frot字体导致的. 所以只要将treevie ...
- 【原】无脑操作:EasyUI Tree实现左键只选择叶子节点、右键浮动菜单实现增删改
Easyui中的Tree组件使用频率颇高,经常遇到的需求如下: 1.在树形结构上,只有叶子节点才能被选中,其他节点不能被选中: 2.在叶子节点上右键出现浮动菜单实现新增.删除.修改操作: 3.在非叶子 ...
- ztree更换节点图标
首先需要注意一点,如果有研究过树形菜单,就会发现实现删除和修改功能特别简单,但是增加却有一点复杂.造成这个现象是ztree树形菜单的历史遗留问题.大概是之前的版本没有增加这个功能,后来的版本加上了这个 ...
随机推荐
- PIE SDK元素位置和显示样式的修改
1功能简介 在数据的处理中会出现根据需求进行元素的位置和显示样式的修改,使元素的形状,空间位置得到改变,下面将介绍基于PIE SDK的元素位置和显示样式的修改. 2功能实现说明 2.1.1 实现思路及 ...
- JAVA WEB开发环境搭建
JAVA WED开发环境搭建 JDK的安装和配置 到https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21 ...
- vue组件传参
一.父子组件的定义 负值组件的定义有两种,我称为常规父子组件和特殊父子组件. 1.1.常规父子组件 将其他组件以import引入用自定义标签接收,在当前组件中component里注册该标签,页面上可以 ...
- Linux 后台运行程序 和切换至前台
fg 将后台中的命令调至前台继续运行 jobs查看当前有多少在后台运行的命令 ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停
- Docker的学习笔记(开发的技术分享转发)
我的Docker学习记录一.安装dockeryum install -y docker-io二.使用docker1.下载镜像docker pull <image>2.查询镜像docker ...
- DEM、DSM、DOM 名词解释
1.DEM(Digital Elevation Matrix) 数字高程矩阵. 数字高程模型(Digital Elevation Model,缩写DEM)是一定范围内规则格网点的平面坐标(X,Y)及其 ...
- URAL 1252 ——Sorting the Tombstones——————【gcd的应用】
Sorting the Tombstones Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I ...
- 【Ubuntu】ubuntu 16.04 设置root用户初始密码
安装ubuntu成功后,都是普通用户权限,并没有最高root权限,如果需要使用root权限的时候,通常都会在命令前面加上 sudo . 我们一般使用su命令来直接切换到root用户的,但是如果没有给r ...
- HttpServletRequest的获取客户端真实IP
摘自:http://chenyoulu.diandian.com/post/2012-11-14/40042540378 request方法客户端IP: request.getRemoteAddr() ...
- HTML代码中<%%>、<%=%>、<%:%>
<%%>之间可以写服务器端代码 比如 <% for(var i=0;i<10;i++){%> <%=%>获取后台的变量值,比如后台一个session[&quo ...