QT 编写xml文件实例
发布时间:2020-12-16 05:42:24 所属栏目:百科 来源:网络整理
导读:直接说方法吧: 1. xml 是QT 另外需要手动添加的模块。 在pro 文件中需要手动添加: QT += xml 2.xml头文件需要用到 #includeQtXml, 当然这是包含了xml 所有的内容, 如果相只操作其中部分功能, 可以使用 #includeQtXml/对应的类名 ,当然本实例中还用到了
直接说方法吧: 1. xml 是QT 另外需要手动添加的模块。 在pro 文件中需要手动添加: QT += xml 2.xml头文件需要用到 #include<QtXml>, 当然这是包含了xml 所有的内容, 如果相只操作其中部分功能, 可以使用 #include<QtXml/对应的类名> ,当然本实例中还用到了#include<QFile> 用于文件的保存, #include <QFileDialog> 让用户自己选择保存路径。 3.直接上源码: #include "widget.h" #include "ui_widget.h" #include <QtXml> #include <QFile> #include <QFileDialog> Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget), m_carId(1) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::on_toolButton_clicked() { QDomDocument carMessage; if(1 == m_carId) { QString strHeader( "version="1.0" encoding="UTF-8"" ); carMessage.appendChild( carMessage.createProcessingInstruction("xml", strHeader) ); }
QStringList carMessageNameList; carMessageNameList << QString::fromUtf8("排量") << QString::fromUtf8("价格") << QString::fromUtf8("排放") << QString::fromUtf8("油耗") << QString::fromUtf8("功率"); QStringList carMessageParamList; carMessageParamList << QString::fromUtf8("1000ml") << QString::fromUtf8("10万") << QString::fromUtf8("欧4") << QString::fromUtf8("5(km/时)") << QString::fromUtf8("74/6000"); QDomElement carNode = carMessage.createElement("car"); carNode.setAttribute("id", QString::number(m_carId)); for(int i = 1; i <= 5; ++i) { QDomText textNode = carMessage.createTextNode(carMessageParamList.at(i - 1)); QDomElement attribNode = carMessage.createElement("attrib"); attribNode.setAttribute("param", carMessageNameList.at(i - 1)); attribNode.appendChild(textNode);
carNode.appendChild(attribNode);
carMessage.appendChild(carNode);
}
QString fileName = QFileDialog::getSaveFileName(this, "Save", QLatin1String("./testDome"), "*.xml"); if(!fileName.endsWith(QLatin1String("xml"))) fileName += QLatin1String(".xml"); QFile file(fileName); if(!file.open(QIODevice::WriteOnly | QIODevice::Append)) return; QTextStream stream(&file); carMessage.save(stream, 4); file.close(); ++ m_carId; } 4.源码部分解释: a.QDomDocument carMessage;生成一个QT创建一些文本文件的类的对象, 如xml, world等。 b.if(1 == m_carId) {QString strHeader( "version="1.0"encoding="UTF-8"" );carMessage.appendChild( carMessage.createProcessingInstruction("xml", strHeader) } //这些代码是为了写xml文件头, m_carId这里是为了多次添加时, 只写一次文件头。c.QStringList carMessageNameList;这里的字符串容器保存的是后面需要用上的参数和内容。d.QDomElement carNode; 当一个xml创建后, 是需要对应的元素的。 无论是第几级, 都是用这个类进行增加对应的item; 如下面图中的<car> , <attrib>e.attribNode.setAttribute这是每一级item对应的属性的增加, 如 id="1", param="排量"f.QDomText textNode用于写元素中间的内容, 如: 1000ml,10万等。g.fileName =QFileDialog::getSaveFileName(this,0)">"Save",128)">QLatin1String("./testDome"),0)">"*.xml");if(!fileName.endsWith("xml")))fileName +=".xml");这里的功能是给用户手动选择一个地方保存, 并如果在未填写后缀名时, 默认加上后缀名。h.QFile file(fileName);if(!file.open(QIODevice::WriteOnly |Append)) 5.运行效果图:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |