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;
        }
    }
}

 本文转自博客园Grandyang的博客,原文链接:读写XML文件Qt Write and Read XML File ,如需转载请自行联系原博主。

相关文章
|
22天前
|
XML 数据格式
小米备份descript.xml文件
小米备份descript.xml文件
21 0
|
1月前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
37 0
|
1月前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
1月前
|
计算机视觉 数据格式
使用opencv在Qt控件上播放mp4文件
使用opencv在Qt控件上播放mp4文件
37 2
|
1月前
【QT】创建、打开QT项目只显示.pro文件的问题解决
【QT】创建、打开QT项目只显示.pro文件的问题解决
|
1月前
【QT】读写.ini配置文件的程序实现
【QT】读写.ini配置文件的程序实现
|
2月前
|
SQL
Mybatis.xml文件中大于小于等于
Mybatis.xml文件中大于小于等于
11 0
|
28天前
|
XML 数据格式 Windows
如何从xml文件创建R语言数据框dataframe
如何从xml文件创建R语言数据框dataframe
|
4天前
|
XML 前端开发 数据格式
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据
【5月更文挑战第10天】BeautifulSoup 是 Python 的一个库,用于解析 HTML 和 XML 文件,即使在格式不规范的情况下也能有效工作。通过创建 BeautifulSoup 对象并使用方法如 find_all 和 get,可以方便地提取和查找文档中的信息。以下是一段示例代码,展示如何安装库、解析 HTML 数据以及打印段落、链接和特定类名的元素。BeautifulSoup 还支持更复杂的查询和文档修改功能。
13 1
|
4天前
|
Android开发
android string.xml文件中的整型和string型代替
android string.xml文件中的整型和string型代替