Qt-QML-C++交互实现文件IO系统-后继-读取XML文件和创建XML文件
在前面两篇中,大致完成了一个文件IO的读和写操作。前面两篇文章链接
http://blog.csdn.net/z609932088/article/details/71488250
http://blog.csdn.net/z609932088/article/details/71598414
今天这个是,今天主要是写了怎么把配置文件写入到XML中
上今天的详代码
QJsonObject DLFileIOSystem::DLReadXML()
{
qDebug()<<"XML 读取函数执行"; QFile file("./config.xml"); //打开XMl文件
if(!file.open(QFile::ReadOnly | QFile::Text))
{
QMessageBox::information(NULL,"Title","Open File False"); //如果打开失败则提示
}
QDomDocument doc; //把文件内容写入到doc中
doc.setContent(&file);
file.close(); //关闭文件 QDomElement root = doc.documentElement(); QDomNode node = root.firstChild();
while (!node.isNull())
{
QDomElement element = node.toElement();
if(!element.isNull())
{
QDomNamedNodeMap list = element.attributes();
for(int i = 0; i<list.count(); i++)
{
xmlDate.insert(list.item(i).nodeName(),list.item(i).nodeValue());
qDebug()<<list.item(i).nodeName();
}
}
node = node.nextSibling();
} return xmlDate;
} bool DLFileIOSystem::DJWriteXML()
{
qDebug()<<"XML 读取函数执行"; QFile file("./config.xml"); //打开XMl文件
if(!file.open(QFile::ReadWrite | QFile::Text | QFile::Truncate)) //这里需要注意的是,写入文件的时候需要以覆盖的方式
{
QMessageBox::information(NULL,"Title","Open File False"); //如果打开失败则提示
} QTextStream out(&file);
QTextCodec *codec = QTextCodec::codecForName("gbk");
out.setCodec(codec);
QDomDocument doc; //把文件内容写入到doc中
doc.setContent(&file);
QDomElement root = doc.createElement("Root");
QDomElement date = doc.createElement("XMLDate"); QStringList list = xmlDate.keys();
for(int i = 0; i<list.count(); i++)
{
date.setAttribute(list.at(i),xmlDate.value(list.at(i)).toString());
} root.appendChild(date);
QString strHead("version = \"1.0\" encoding = \"GB2312\"");
doc.appendChild(doc.createProcessingInstruction("xml",strHead));
out<<doc.toString();
root.save(out,2);
file.close(); //关闭文件
QMessageBox::warning(NULL,"提示","文件写入完成");
return true;
}
一个读文件,一个写文件
这里要参考以为牛逼大大的文章
http://blog.csdn.net/sbisyju/article/details/8701561#comments
剩下的就不用在说了,看到前面
这里还有一个问题了就是,前几天没有弄出来的一点,这里要说明一下,
// property JSON date : FileIOSystem.DLReadFile()
// property QJSON name: value
property var xmljson: FileIOSystem.DLReadXML()
只有最后一种方式是正确的,把C++传来的QJsonObject定义成一个json属性
完了就可以在后面的内容中愉快的使用了
代码结构
Qt-QML-C++交互实现文件IO系统-后继-读取XML文件和创建XML文件的更多相关文章
- Qt-QML-C++交互实现文件IO系统-后继-具体文件IO的实现
在上一篇文章中,我大致将这个QML中的文件IO类搭出了大致的框架,那么,今天抽时间写了一点文件的读写,这里我使用的文件流来读写文件. 文件结构如图 在QML中调用这个类了,就见简单的读取了一个JSON ...
- Qt-QML-C++交互实现文件IO系统
QMl是没有自己的文件IO控制的,这里如果我们需要对文件进行读写操作,那么就需要去C++或者JS完成交互,交互方式有多种,由于我还没有掌握,这里就不介绍具体的交互方式了.这里就简单说明一下我的实现过程 ...
- solr 6.0 没有schema.xml未自动创建schema文件
solr 6.0 没有schema.xml未自动创建schema文件 摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中 ...
- Java 之文件IO编程 之读取
package com.sun; /* * 这里是对文件IO流读取的操作 * 2014-08-10 */ import java.io.*; public class File_test { publ ...
- C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)
最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来 ...
- linux系统编程之文件与IO(三):利用lseek()创建空洞文件
一.lseek()系统调用 功能说明: 通过指定相对于开始位置.当前位置或末尾位置的字节数来重定位 curp,这取决于 lseek() 函数中指定的位置 函数原型: #include <sys/ ...
- Java IO 流 -- 随机读取和写入流 RandomAccessFile (文件分割和合并)
RandomAccessFile 相对其它流多了一个seek() 方法指定指针的偏移量. 1.指定起始位置读取剩余内容 public static void test01() throws IOExc ...
- shell脚本读取文件+读取命令行参数+读取标准输入+变量赋值+输出到文件
读取url_list文件批量下载网页 url_list http://www.tianyancha.com/company/2412078287 http://www.4399.com/special ...
- 2.6.1 XML配置:创建XML文件
(1) 工程名右击---New--file -- newfile窗口中:filename中输入testng.xml testng.xml 文件中打开后,切换到source 标签中.进行编辑. 内容 ...
随机推荐
- Entity Framework——性能测试
内容提要 一.对EF框架的性能测试 增.删.改,查测试及性能优化 二.使用sql执行 增.删.改,查测试 三.对以上两种方式对比分析 一 对EF框架的测试 1插入操作测试 测试代码(关键部分) Lis ...
- WEB测试—功能测试
1. 链接测试 1.1 测试点: 是否添加链接 链接页面是否存在 链接页面与需求是否一致:页面的正确性.打开方式 等 一般,该链接测试在集成测试阶段(页面均开发 ...
- async--ajax异步传输
如图:轨迹点组编号依赖所属路口的设置. 所以ajax是异步执行,获取到所属路口还没执行完,就已经执行到根据所述路口获取轨迹点组编号,所以获取不到轨迹点组编号. async:false改成同步执行.就没 ...
- python查看微信消息撤回
准备环境 python语言环境 python解释器-pycharm itchat介绍 itchat是一个开源的微信个人号接口,通过itchat可以实现微信(好友或微信群)的信息处理,包括文本.图片.小 ...
- 图片左右滚动控件(带倒影)——重写Gallery
转http://blog.csdn.net/ryantang03/article/details/8053643 今天在网上找了些资料,做了一个图片左右滚动的Demo,类似幻灯片播放,同时,图片带倒影 ...
- Andorid进阶7—— Ant自动编译打包&发布 android项目
http://www.cnblogs.com/tt_mc/p/3891546.html Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Ecl ...
- oracle sqldrl命令与以及ctl文件
具体操作如下: 第一步:先编辑好数据控制文件 xx.ctl,如test.ctl options(skip=1) --跳过第一行(看实际情况) load data infile 'C:\Users\ ...
- Jquery 操作 select 的操作指南
这里我们以一个简单的select作为原型来进行说明: <select> <option value="a1">香蕉1</option> < ...
- 数据库函数(Left、Right)
MySQL 字符串截取函数:left(), right(), substring(), substring_index().还有 mid(), substr().其中,mid(), substr() ...
- Spring + Mybatis应该如何配置
### 1. MYBATIS简介 MYBATIS是持久层框架,大大的简化了持久层开发. 当使用MYBATIS框架时,开发人员不必再编写繁琐的JDBC代码,只需要定义好每个功能对应的抽象方法与需要执行的 ...