Qt Write and Read XML File 读写XML文件

在Qt中,我们有时候需要把一些参数写入xml文件,方便以后可以读入,类似一种存档读档的操作,例如,我们想生成如下的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<Parameters>
    <para1>1</para1>
    <para2>2</para2>
    <para3>3</para3>
</Parameters>

那么写入的操作请参见如下代码:

void QtMainWindow::on_actionSave_triggered() {
    QString filename = QFileDialog::getSaveFileName(this,
        tr("Save Xml"), ".",
        tr("Xml files (*.xml)"));
    QFile file(filename);
    file.open(QIODevice::WriteOnly);
    QXmlStreamWriter xmlWriter(&file);
    xmlWriter.setAutoFormatting(true);
    xmlWriter.writeStartDocument();
    xmlWriter.writeStartElement("Parameters");
    xmlWriter.writeTextElement("para1",QString::number(1));
    xmlWriter.writeTextElement("para2",QString::number(2));
    xmlWriter.writeTextElement("para3",QString::number(3));
    xmlWriter.writeEndElement();
    xmlWriter.writeEndDocument();
    file.close();
}

读入的操作请参见如下:

void QtMainWindow::on_actionLoad_triggered() {
    QString filename = QFileDialog::getOpenFileName(this,
        tr("Open Xml"), ".",
        tr("Xml files (*.xml)"));
    QFile file(filename);
    if (!file.open(QFile::ReadOnly | QFile::Text)) {
        std::cerr << "Error: Cannot read file " << qPrintable(filename)
            << ": " << qPrintable(file.errorString())
            << std::endl;
    }
    QXmlStreamReader xmlReader(&file);
    xmlReader.readNext();
    while(!xmlReader.atEnd()) {
        if(xmlReader.isStartElement()) {
            if(xmlReader.name() == "Parameters") {
                xmlReader.readNext();
            } else if (xmlReader.name() == "para1") {
                int para1 = xmlReader.readElementText().toInt();
                xmlReader.readNext();
            } else if (xmlReader.name() == "preFilterCap") {
                int para2 = xmlReader.readElementText().toInt();
                xmlReader.readNext();
            } else if (xmlReader.name() == "SADWindowSize") {
                int para3 = xmlReader.readElementText().toInt();
                xmlReader.readNext();
            } else {
                xmlReader.raiseError(QObject::tr("Not a options file"));
            }
        } else {
            xmlReader.readNext();
        }
        file.close();
        if (xmlReader.hasError()) {
            std::cerr << "Error: Failed to parse file "
                << qPrintable(filename) << ": "
                << qPrintable(xmlReader.errorString()) << std::endl;
        } else if (file.error() != QFile::NoError) {
            std::cerr << "Error: Cannot read file " << qPrintable(filename)
                << ": " << qPrintable(file.errorString())
                << std::endl;
        }
    }
}
时间: 2024-08-06 16:02:08

Qt Write and Read XML File 读写XML文件的相关文章

Qt 读写XML文件

1.读操作: QDomDocument doc( “mydocument " ); QFile file( "ccc.xml" ); if ( !file.open( IO_ReadOnly ) ) { return; } if ( !doc.setContent( &file ) ) { file.close(); return; } file.close(); 2.写操作 原理很简单,由于XML是分级结构,因此只要找到需要写的Node的所在的级别,然后调用setN

使用dom4j 读写xml文件

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,同时它也是一个开放源代码的软件. String fileName="D:\\version.xml"; File inputXML=new File(fileName); //使用 SAXReader 解析 XML 文档 version.xml SAXReader saxReader=new SAXReader();

iOS 读写xml文件

//*********写入文件,传入要保存的信息*********//保存xml -(void) saveXml:(NSString *)data { //创建文件管理器 NSFileManager *fileManager = [NSFileManager defaultManager ]; //获取路径 //参数NSDocumentDirectory要获取那种路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentD

读写XML

XML是一种可扩展标记语言 下面是一个完整的XML文件(也是下文介绍读写XML的样本): [html] view plaincopy <?xml version="1.0" encoding="UTF-8"?> <poem author="William Carlos Williams" title="The Great Figure"> <line>Among the rain</l

C#_在.net中序列化读写xml方法的总结

阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数组的做为数据成员的序列化 类型继承与反序列化 反序列化的实战演练 反序列化的使用总结 排除不需要序列化的成员 强制指定成员的序列化顺序 自定义序列化行为 序列化去掉XML命名空间及声明头 XML的使用建议 XML是一种很常见的数据保存方式,我经常用它来保存一些数据,或者是一些配置参数. 使用C#,我

JAVA学习笔记 -- 读写XML

XML是一种可扩展标记语言 以下是一个完整的XML文件(也是下文介绍读写XML的样本): <? xml version="1.0" encoding="UTF-8"? > <poem author="William Carlos Williams" title="The Great Figure"> <line>Among the rain</line> <line>

JAXB方式读写XML文件

import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.bind.JAXB; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import cn.com.starit.ts.nms.collec

PHP读写XML文件的四种方法

PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介绍. 介绍之前首先对本文例子使用的数据和文件进行说明.本文写XML文件的例子都是从MySQL中读取数据然后 写入到XML文件中,读XML文件的例子都是从XML文件中读取数据后组装成数组的格式,数组中每个元素对应数 据库中的一条记录. MySQL中的数据: XML文件: 1 2 3 4 5 6 7 8

Java读写xml文件的一些经验(使用dom4j)

说来惭愧,给很多人说过怎么用Java读写xml,但是自己上手做的很少.这篇博客里面简单总结一下. 据网上很多文章介绍,dom4j是一种常用的xml读写API.不过用的时候首先要注意第一个问题:如果在Bing.com里搜索dom4j,排在第一名的是:http://www.dom4j.org/ 很遗憾,这个域名和dom4j没有任何关系,其在Sourceforge上的主页是:http://sourceforge.net/projects/dom4j/ ,我这里下载的是稳定版,将dom4j-1.6.1.