现在我们再讲一下应该怎么把数据写成XML文件。

还是以例子入手,假设我们已经有了前面章节例子的数据,这一节我们考虑怎么把这些数据按照xml文件格式写入到xml文件里面。

首先列一下我们需要写入的数据:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<Mode><firstEle><A id = "1"><T param1="42323" param2="2356" param3= "3d2"/><R param1="6256" param2="23562" param3= "f232f"/></A> <!-- childNode.nextSibling() 寻找下一个兄弟节点 --><A id = "2"><R param1="433f3f" param2="frsfs" param3= "f2g34g"/><R param1="243442" param2="324232" param3= "j665"/></A><B id = "3"><B param1="sdfsdfs" param2="fef2" param3= "43tg"/><W param1="123123" param2="32ff" param3= "efea"/></B></firstEle><secondEle><C id = "4"><B param1="143221" param2="kyr5y" param3= "fwf"/><B param1="124531" param2="4g4gs" param3= "4w4g"/></C><D id = "5"><B param1="13231233" param2="3qfgg" param3= "44444tw"/><B param1="45435" param2="aacevev" param3= "dghh"/></D></secondEle>
</Mode>
<Mode2><firstEle2><A id = "1"><T param1="42323" param2="2356" param3= "3d2"/><R param1="6256" param2="23562" param3= "f232f"/></A> <!-- childNode.nextSibling() 寻找下一个兄弟节点 --><A id = "2"><R param1="433f3f" param2="frsfs" param3= "f2g34g"/><R param1="243442" param2="324232" param3= "j665"/></A><B id = "3"><B param1="sdfsdfs" param2="fef2" param3= "43tg"/><W param1="123123" param2="32ff" param3= "efea"/></B></firstEle2><secondEle2><C id = "4"><B param1="143221" param2="kyr5y" param3= "fwf"/><B param1="124531" param2="4g4gs" param3= "4w4g"/></C><D id = "5"><B param1="13231233" param2="3qfgg" param3= "44444tw"/><B param1="45435" param2="aacevev" param3= "dghh"/></D></secondEle2>
</Mode2>
</ROOT>

写入的第一件事:打开文件。

QString fileName{ "Motor.xml" };
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{qDebug() << "open for add error!!";
}
//输出到文件
QTextStream out_stream(&file);
out_stream<<"It is a test. ";
file.close();

运行以后打开文件,里面出现了It is a test. 的字样,表示文件成功打开了。

接下来就是创建XML的数据结构了:

//打开或创建文件QString fileName{ "Motor.xml" };QFile file(fileName);QDomDocument doc;
QDomProcessingInstruction instruction = doc.createProcessingInstruction("xml",                     "version=\"1.0\" encoding=\"UTF-8\"");
doc.appendChild(instruction);/**以后内容都在这里逐步补全**///输出到文件
QTextStream out_stream(&file);
doc.save(out_stream, 4); //缩进4格
file.close();

首先创建一个fileName文件,然后使用QDomDocument 创建一个对象,接下来就很简单明白了,注意要把instruction加入到doc的子节点里面。否则啥也不会输出到文件里去。

输入结果如下:

<?xml version="1.0" encoding="UTF-8"?>

之后我们要把根节点加进去:

QDomElement root = doc.documentElement();
root = doc.createElement("ROOT");
doc.appendChild(root);

注意这里的root是一个QDomElement元素,直接加到了doc的子节点里,这时候文件输出如下:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT/>

要注意的是,这个<Mode/>和</Mode>可不是同一个东西!<Mode/>展开就可以写作<Mode></Mode>。如果我们强行加了两个根节点进去,虽然输出没有问题,但是用浏览器等打开是会有问题的。

<?xml version="1.0" encoding="UTF-8"?>
<ROOT/>
<ROOT2/>

再在下面写入:

 QDomElement mode = doc.documentElement();mode = doc.createElement("Mode");QDomElement mode2 = doc.documentElement();mode2 = doc.createElement("Mode2");root.appendChild(mode);root.appendChild(mode2);

和上面类似,只不过我们是把mode加入到了root的子节点里,效果显示如下:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT><Mode/><Mode2/>
</ROOT>

之后,我们要在Mode里添加子节点。程序以及显示效果如下:

 QDomElement firstEle = doc.documentElement();firstEle = doc.createElement("firstEle");QDomElement secondEle = doc.documentElement();secondEle = doc.createElement("secondEle");QDomElement firstEle2 = doc.documentElement();firstEle2 = doc.createElement("firstEle2");QDomElement secondEle2 = doc.documentElement();secondEle2 = doc.createElement("secondEle2");mode.appendChild(firstEle);mode.appendChild(secondEle);mode2.appendChild(firstEle2);mode2.appendChild(secondEle2);
<?xml version="1.0" encoding="UTF-8"?>
<ROOT><Mode><firstEle/><secondEle/></Mode><Mode2><firstEle2/><secondEle2/></Mode2>
</ROOT>

可以看到结构已经基本成型了,接下来就是最后的数据填充了。下一节我们再介绍。

XML语言数据读写理解5相关推荐

  1. XML语言数据读写理解2

    首先我们需要了解一下对于计算机来说,XML语言到底是怎么构成的.一般来说,XML语言的第一行会是这种形式: <?xml version="1.0" encoding=&quo ...

  2. XML语言数据读写理解1

    可扩展标记语言(XML)是一种非常简单的数据存储读写语言,与其他数据库语言相比,这是它最大的优点. 废话少说,接下来我们就写一下XML的语言格式:如何从0开始写一个XML数据文件,并用C++语言将里面 ...

  3. XML语言数据读写理解16

    下面我们介入一个应用场景:也就是我们xml文件的应用:体渲染传输函数. 首先看一下效果: 这是从软件ExposureRender上截的图来显示的,左边的面板用来调节传输函数,右边来显示出效果.该程序的 ...

  4. XML语言数据读写理解13

    最后就是在tsfunGroup类里面定义函数: void writeXML(); 因为不再需要什么返回值了.源码如下: void TsfunGroup::writeXML() {writeFile.c ...

  5. XML语言数据读写理解3

    首先先把我们要读取的xml文件搞上来: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Ap ...

  6. XML语言数据读写理解10

    我们上一节讲完了读出Nodes和其他属性信息的程序,接下来我们把两个Item读到group里面. #pragma once #include <QObject> #include &quo ...

  7. XML语言数据读写理解11

    有了前10节的基础,以及我在自己的博客里发布了那个简单的QT调试窗口类,一共两个,一个是有单例的,一个不是.大家想使用的话只需要加个头文件就可以调用了. 我们现在需要把存好的内容给显示出来,看看是不是 ...

  8. XML语言与JSON

    关于XML语言与JSON 1.什么是XML 2.XML的作用 3.什么是XML文件 XML语法 1.XML文档声明 2.标记(元素/标签/节点) 3.一个XM文档只能有一个最外层标记(根标记) 4.标 ...

  9. R语言XML格式数据导入与处理

    数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...

最新文章

  1. php创建多级目录完整封装类操作
  2. 并发工具类(三)控制并发线程数的Semaphore
  3. 上交大计算机导师俞凯,WLA青科聊高考①|偶像剧“男主”、上海交大教授俞凯的学霸人生...
  4. mysql怎么用游标修改数据,如何使用mysql 游标?
  5. 《SAS编程与数据挖掘商业案例》学习笔记之十七
  6. 向MPEG创始人Leonardo Chiariglione提问
  7. RabbitMQ 整合 Spring Cloud Stream
  8. 高等组合学笔记(十五):容斥原理,错排问题
  9. 什么是隐形门? 隐形门安装要注意什么
  10. 在sqlserver sql语句中查找速度快
  11. 用 Lucene 构建文档数据库
  12. Python计算器程序实现,支持括号与符号检测、小数、负数运算
  13. 苹果App Store应用程序的下载链接地址
  14. 创建阻止windows自动锁屏的脚本
  15. mysql 导入dmp_navicat怎么导入dmp文件
  16. java修改文件只读_java修改文件为只读权限
  17. ZBrush:笔刷基础
  18. sftp命令上传本地文件到服务器,使用sftp命令上传文件夹方法
  19. python安装cfgrib读取grib数据
  20. “功夫高考”之高考状元的七种武器

热门文章

  1. 无法加载操作系统,因为无法验证文件或其某个00项的数字签名
  2. C++ 读取h264中的nalu
  3. 电脑本地连接消失了且不能上网
  4. 【Houdini官方入门教程翻译】概述——建模工具
  5. Python_用 Python 为毕业论文参考文献排序
  6. 对战五子棋——网页版
  7. 什么是NAT?NAT主要用在什么场合?
  8. Go Nodejs Java Aes 128 ECB加密解密结果保持一致
  9. php魔术方法call,PHP魔术方法__call()
  10. 以太坊-挣脱数字货币的枷锁