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 标签中.进行编辑. 内容 ...
随机推荐
- centos 在安装YouCompleteMe时提示 Fatal : pyconfig.h No such file or directory
问题:centos 在安装YouCompleteMe时提示 Fatal : pyconfig.h No such file or directory 解决:安装python-devel yum ins ...
- Selenium应用代码(读取excel的内容进行注册的案例)
1. 封装读取excel数据的方法:import java.io.*;import java.util.ArrayList;import java.util.List; import jxl.*;im ...
- 利用Apache Isis快速原型化-宠物诊所的宠物管理
前言 Apache Isis是DDD方法的一个实现框架. 需求分析 宠物诊所需要记录宠物的资料,包括类型.名字.及其主人. 多个宠物可能同属于一个主人. 宠物可能更换主人. 宠物主人记录姓名,我们可以 ...
- C#和C++的Socket通信
最近在用C#做一个项目的时候,Socket发送消息的时候遇到了服务端需要接收C++结构体的二进制数据流,这个时候就需要用C#仿照C++的结构体做出一个结构来,然后将其转换成二进制流进行发送,之后将响应 ...
- oracle 导出空表问题
select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
- CToolBarCtrl基本内容控件
基本内容CToolBarCtrl CObject └CCmdTarget └CWnd └CToolBarCtrl CToolBarCtrl类提供了Windows工具条通用控件的性能.这个控件(也就是C ...
- peripheralStateNotificationCB
/********************************************************************* * @fn peripheralStateNotifica ...
- Extjs header column 自定义排序规则
Extjs 的表格自带排序功能,这个功能在大部分情况下能够满足我们的需求,但是在某种情况下,例如IP排序,默认情况下,按照字符串进行排序, 此时我们需要自定义排序规则,这个时候就需要我们重写方法了, ...
- 史上最简单的SpringCloud教程 | 第十二篇: 断路器监控(Hystrix Dashboard)(Finchley版本)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f12-dash/ 本文出自方志朋的博客 在我的第四篇文章断路 ...
- synchronized 控制并发(活动秒杀)
1.首先我们新建一个Controller用于秒杀: package com.imooc.Controller; import com.imooc.service.impl.SeckillService ...