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 标签中.进行编辑. 内容 ...
随机推荐
- ResourceWarning: unclosed <socket.socket fd=864, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.100.x.x', 37321), raddr=('10.1.x.x', 8500)>解决办法
将代码封装,并使用unittest调用时,返回如下警告: C:\python3.6\lib\collections\__init__.py:431: ResourceWarning: unclosed ...
- 使用npm uninstall卸载express无效
最近在看<node.js开发指南>学习node.js,因为书是2012年的书,对应的各种软件.包的版本就特别老,其中第五章用到express,书中版本用的是2.X版本,而我这边通过npm ...
- 解决IntelliJ IDEA控制台输出中文乱码问题
一.原因: windows下的本地编码(GBK) ,在idea 整合的 maven中使得默认vm 的编码是utf-8.所以出现控制台乱码.tomcat设置的utf-8也会与window设置的gbk冲突 ...
- HTML5对表单的一些有意思的改进
HTML5对表单进行了许多的改进,在这篇文章中,我选择了其中个人认为很有趣的三个变化:自动聚焦,对button元素的改进,把表单元素与非父元素的form表单挂钩进行简单的介绍. 1. 自动聚焦 自动聚 ...
- 100个常用的linux命令(转)
来源:JavaRanger – javaranger.com http://www.javaranger.com/archives/907 1,echo “aa” > test.txt 和 ...
- springboot自定义异常页面
废话不多,直接开始. 项目目录: 说明:springboot 静态文件放在static目录中,如images中放的图片:templates目录下error中存放的是错误页面,如500.html代表50 ...
- position和BFC
一.关于position流定位:不能通过left/top属性来进行定位(那用什么定位),上下排列的元素纵向边距会被合并,左右元素横向边距不会合并.浮动定位:脱离文本流,就好像不在父元素中,像是浮在父元 ...
- Oracle以固定字符截取字符串
CREATE OR REPLACE FUNCTION "F_SPLIT" (p_str IN CLOB, p_delimiter IN VARCHAR2) RETURN ty_st ...
- mysql千万级数据库插入速度和读取速度的调整
mysql上百万数据读取和插入更新一般没什么问题,但上千万后速度会很慢,如何调整配置,提高效率.如下: 1.尽量将数据一次性写入DataFile和减少数据库的checkpoint操作,调整如下参数: ...
- 【oracle笔记2】约束
约束 *约束是添加在列上的,用来约束列的. 1. 主键约束(唯一标识) ***非空*** ***唯一*** ***被引用***(外键时引用主键) *当表的某一列被指定为主键后,该列就不能为空,不能有重 ...