xml文件的创建和插入节点【原创】
Author:张继飞
插入节点部分的实现是从现有节点的后面添加。
为了解决插入后不对齐的问题,需要修改这几个地方
doc=xmlParseFile("xml.xml"); 改为 doc=xmlReadFile("xml.xml","UTF-8",XML_PARSE_NOBLANKS);
xmlSaveFormatFile("xml.xml", doc, 0); 改为 xmlSaveFormatFile("xml.xml", doc, 1);
#include <stdio.h>
#include <stdlib.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main(int argc, char **argv)
{///insert message into xml.xml 该部分为在相关xml文件插入节点
xmlDocPtr doc = NULL; /* document pointer */
xmlNodePtr root_node = NULL, node = NULL, node1 = NULL;/* node pointers */
doc=xmlParseFile("xml.xml"); //首先解析xml文件,放入内存
root_node = xmlDocGetRootElement(doc); //获取根节点
//creates a new node, which is "attached" as child node of root_node node.
node = xmlNewChild(root_node, NULL, BAD_CAST "node1",BAD_CAST "content of node1"); //根据根节点(root_node)来插入根节点的的子节点为node1,
xmlNewChild(node, NULL, BAD_CAST "node2",BAD_CAST "node2 is node1's sub"); //根据子节点node1(node)来插入子节点的的子节点为node2,
node=xmlNewChild(root_node, NULL, BAD_CAST "node3",BAD_CAST"node has attributes"); //插入根节点的子节点node3
xmlNewProp(node, BAD_CAST "attribute", BAD_CAST "yes"); //添加子节点的属性。
//Here goes another way to create nodes.
node = xmlNewNode(NULL, BAD_CAST "node4");
node1 = xmlNewText(BAD_CAST"other way to create content");
xmlAddChild(node, node1);
xmlAddChild(root_node, node); //Dumping document to stdio or file
xmlSaveFormatFile("xml.xml", doc, 0); //将此内存保存到文件
xmlFreeDoc(doc); /*free the document */
xmlCleanupParser();
xmlMemoryDump();//debug memory for regression tests
return(0);
}
/*
int main(int argc, char **argv)
{///creat xml doc 该部分为创建xml文件
xmlDocPtr doc = NULL; // document pointer
xmlNodePtr root_node = NULL, node = NULL, node1 = NULL;// node pointers
// Creates a new document, a node and set it as a root node
doc = xmlNewDoc(BAD_CAST "1.0");
root_node = xmlNewNode(NULL, BAD_CAST "root");
xmlDocSetRootElement(doc, root_node);
//creates a new node, which is "attached" as child node of root_node node.
xmlNewChild(root_node, NULL, BAD_CAST "node1",BAD_CAST "content of node1");
// xmlNewProp() creates attributes, which is "attached" to an node.
node=xmlNewChild(root_node, NULL, BAD_CAST "node3",BAD_CAST"node has attributes");
xmlNewProp(node, BAD_CAST "attribute", BAD_CAST "yes");
//Here goes another way to create nodes.
node = xmlNewNode(NULL, BAD_CAST "node4");
node1 = xmlNewText(BAD_CAST"other way to create content");
xmlAddChild(node, node1);
xmlAddChild(root_node, node); //Dumping document to stdio or file
xmlSaveFormatFileEnc(argc > 1 ? argv[1] : "-", doc, "UTF-8", 1); //free the document
xmlFreeDoc(doc);
xmlCleanupParser();
xmlMemoryDump();//debug memory for regression tests
return(0);
}*/
/*
gcc -o main xml.c -lxml2 -I /usr/include/libxml2/
下面为创建后产生的结果:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<node1>content of node1</node1>
<node3 attribute="yes">node has attributes</node3>
<node4>other way to create content</node4>
</root>
下面为在上面基础上执行插入后产生的结果,虽然后面的排列不整齐,但不影响xml的解析。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<node1>content of node1</node1>
<node3 attribute="yes">node has attributes</node3>
<node4>other way to create content</node4>
<node1>content of node1</node1><node3 attribute="yes">node has attributes</node3><node4>other way to create content</node4><node1>content of node1<node2>node2 is node1's sub</node2></node1><node3 attribute="yes">node has attributes</node3><node4>other way to create content</node4></root>
*/
xml文件的创建和插入节点【原创】相关推荐
- 【.NET】XML文件的创建,修改,删除
类名:XML /// 1.创建XML文档 /// 2.在根节点下增加子元素 /// 3.在元素下增加子元素 /// 4.获取类型为制定值的一组节点 /// 5.抓取网页上的xml文档赋值给XmlDoc ...
- libxml2对XML文件的创建、解析、查找、修改
一.Libxml2介绍: Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件.它除了支持c语言版以外,还支持c++.PHP ...
- 【DOM编程艺术】动态创建标记(签)---创建和插入节点
window.οnlοad=function(){var para=document.createElement('p');var info= 'nodeName:';info += para.nod ...
- C# xml文件的创建,修改和添加节点 。
最近在做一个项目,设计到xml文件的传输,所以就研究了一下. ,.NET Framework完全支持XML DOM模式,但它不支持SAX模式..NET Framework支持两种不同的分析模式:XML ...
- 【unity3d--初始学习五--c#脚本对xml文件的创建和解析】
本人用c#编写脚本. 创建xml文件时,主要用到System.Xml包中的XmlDocument,XmlNode,XmlElement.下面是创建xml文档的一般步骤: XmlDocument doc ...
- Linux下的xml文件的创建
创建一个xml文档流程如下: l 用xmlNewDoc函数创建一个文档指针doc: l 用xmlNewNode函数创建一个节点指针root_node: l 用xmlDocSetRoo ...
- java解析xml文件:创建、读取、遍历、增删查改、保存
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用JDOM接口解析xml文件,包含创建.增删查改.保存,读取等操作. 需要引入jdom.jar,下载 xercesImpl.jar,下载 ...
- Android学习笔记之AndroidManifest.xml文件解析(学习别人的..非原创)
AndroidManifest.xml是每个android程序中必须的文件.它位于application的根目录,描述了package中的全局数据,包括了package中暴露的组件(activitie ...
- Qt操作XML文件(创建,读,写,修改,添加,删除)
XML文件在项目开发的过程中经常用的,比如配置文件基本上都是XML格式的,本文介绍在Qt环境下操作XML文件,具体用法看代码 原txt文件内容,在 http://www1.jctrans.com/to ...
最新文章
- java后台post请求调用接口
- 安装Anaconda创建虚拟环境以及在pycharm中使用虚拟环境
- python 购物车代码
- Block 再学习 !
- 大数据助力智慧城市建设
- sdch: chrome支持的新HTTP传输压缩算法
- 基于mysql和php的分布式事务处理1,基于MySQL和PHP的分布式事务处理
- SQL Server 高可用性(一)AlwaysOn 技术
- java七武器系列_Java七武器系列多情环 --多功能Profiling工具 JVisual VM
- 【大数据部落】R语言如何使用rjags R2jags来建立贝叶斯模型
- 网络节点是计算机与网络的什么,网络节点是什么意思?
- S7-1500 CPU、显示器、ET 200SP CPU 和 ET 200pro CPU 的固件更新方法
- java 阿里云消息推送到手机
- KUKA库卡机器人零点失效维修案例
- MSOCache文件夹能否删除
- 美国enom域名的优势
- 程序员怎样更优雅的接私活赚外快
- python制作ico图标_python使用PythonMagic k将jpg图片转换成ico图片的方法
- 一个月薪5k+的广州安全服务实习生的真实生活
- Java毕设项目师生健康信息管理系统(java+VUE+Mybatis+Maven+Mysql)
热门文章
- 北大博士,毕业做北京城管,他的同事清一色名校硕士,博士,这个世界怎么了?...
- 深度挖掘论文:《Semantic Soft Segmentation》(语义软分割)
- 32-bit ARM的 word halfword byte
- c oracle 分页工具类,Util工具类 跨Oracle、MySQL通用分页查询
- python实现编译器链接器_Python入门之Python编译器
- 华为再发行30亿元超短期融资券
- iPhone 13凌晨发布,电池容量较iPhone 12最高有望提升20%(文末有福利)
- ofo败局中唯一赚到钱的只有他?当事人回应......
- “入圈”高端大获成功!小米10至尊版上市首月霸榜京东、天猫5000元以上档销量第一...
- 来做网课老师不?年薪两百万,上不封顶...