在前面两篇中,大致完成了一个文件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文件的更多相关文章

  1. Qt-QML-C++交互实现文件IO系统-后继-具体文件IO的实现

    在上一篇文章中,我大致将这个QML中的文件IO类搭出了大致的框架,那么,今天抽时间写了一点文件的读写,这里我使用的文件流来读写文件. 文件结构如图 在QML中调用这个类了,就见简单的读取了一个JSON ...

  2. Qt-QML-C++交互实现文件IO系统

    QMl是没有自己的文件IO控制的,这里如果我们需要对文件进行读写操作,那么就需要去C++或者JS完成交互,交互方式有多种,由于我还没有掌握,这里就不介绍具体的交互方式了.这里就简单说明一下我的实现过程 ...

  3. solr 6.0 没有schema.xml未自动创建schema文件

    solr 6.0 没有schema.xml未自动创建schema文件 摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中 ...

  4. Java 之文件IO编程 之读取

    package com.sun; /* * 这里是对文件IO流读取的操作 * 2014-08-10 */ import java.io.*; public class File_test { publ ...

  5. C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)

    最近工作中遇到一个问题,要求创建一个XML文件,在创建的时候要初始化该XML文档,同时该文档打开后是XML形式,但是后缀名不是.在网上找了好些资料没找到,只能自己试着弄了一下,没想到成功了,把它记下来 ...

  6. linux系统编程之文件与IO(三):利用lseek()创建空洞文件

    一.lseek()系统调用 功能说明: 通过指定相对于开始位置.当前位置或末尾位置的字节数来重定位 curp,这取决于 lseek() 函数中指定的位置 函数原型: #include <sys/ ...

  7. Java IO 流 -- 随机读取和写入流 RandomAccessFile (文件分割和合并)

    RandomAccessFile 相对其它流多了一个seek() 方法指定指针的偏移量. 1.指定起始位置读取剩余内容 public static void test01() throws IOExc ...

  8. shell脚本读取文件+读取命令行参数+读取标准输入+变量赋值+输出到文件

    读取url_list文件批量下载网页 url_list http://www.tianyancha.com/company/2412078287 http://www.4399.com/special ...

  9. 2.6.1 XML配置:创建XML文件

    (1) 工程名右击---New--file  --  newfile窗口中:filename中输入testng.xml testng.xml 文件中打开后,切换到source 标签中.进行编辑. 内容 ...

随机推荐

  1. NodeJS学习日记--VSCode下调试

    在vscode中打开项目文件夹 点击左侧的调试菜单,在打开的页面中点击下拉框并点击添加配置 在弹出框中选择 node.js vscode 会自动在项目文件夹下添加.vscode文件夹,并创建launc ...

  2. Subnetting

    Subnet Addressing To better utilize IP address Subnet addressing introduces another hierarchical(分层) ...

  3. MVCPager分页使用方法

    public ActionResult AdminUserList(UserListModel model) { var pagedList = _userService.SearchAdminUse ...

  4. 用js写三个数,让三个数从小到大排列

    console.log('请输入三个数:'); let num1 = readline.question() - 0; let num2 = readline.question() - 0; let ...

  5. 数据库——MySQL——索引

    索引的功能就是加速查找,MySQL中的primary key,unique,联合唯一也都是索引,只是这些索引除了加速查找以外,还有约束功能. 一般的应用系统,读写比例在10:1左右,而且插入操作和一般 ...

  6. Use PerfHUD ES to Do Frame Capture Android Game

    Author: http://www.cnblogs.com/open-coder/p/3898224.html Get Start This is short tutorial about how ...

  7. Xcode 之 Debug 和 Release 模式切换方式 - iOS

    一.选择项目工程,其次选择 Edit Scheme 二.在弹框中选择 Run => Info => Build Configuration 选择中进行 Debug 和 Release 的切 ...

  8. 更新UI放在主线程的原因

    1.在子线程中是不能进行UI 更新的,而可以立刻更新的原因是:子线程代码执行完毕了,又自动进入到了主线程,这中间的时间非常的短,让我们误以为子线程可以更新UI.如果子线程一直在运行,则无法更新UI,因 ...

  9. php中的引用

    $var1 = 'zhuchunyu'; $var2 = ""; function foo($vaa){ global $var1,$var2; if (!$vaa){ $var2 ...

  10. CF1066A Vova and Train(模拟)

    大水题... 题目要求你求能看到的灯笼数,我们可以分为3部分 总共的灯笼数——————1 在 l 左面的灯笼数(不包括lll)——————2 在 r 左面的灯笼数(包括rrr)——————3 我们知道 ...