微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

QT 编写xml文件实例

http://blog.csdn.net/li235456789/article/details/50491805

直接说方法吧:

1. xml 是QT 另外需要手动添加的模块。 在pro 文件中需要手动添加: QT += xml

2.xml头文件需要用到 #include<QtXml>, 当然这是包含了xml 所有的内容, 如果相只操作其中部分功能, 可以使用 #include<QtXml/对应的类名> ,当然本实例中还用到了#include<QFile> 用于文件的保存, #include <QFileDialog> 让用户自己选择保存路径。

3.直接上源码:

#include "widget.h"
"ui_widget.h"
<QtXml>
<QFile>
<QFileDialog>
 
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
ui(new Ui::Widget),0);">m_carId(1)
{
ui->setupUi(this);
}
 
 
Widget::~Widget()
{
deleteui;
}
 
 
voidWidget::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("排量")
                       <<"价格")
"排放")
"油耗")
"功率");
 
 
 carMessageParamList;
    carMessageParamList"1000ml")
                        <<"10万")
"欧4")
"5(km/时)")
"74/6000");
 
 
QDomElement carNode = carMessage.createElement("car");
    carNode.setAttribute("id",128);">QString::number(m_carId));
 
 
for(int i1; <=5; ++i)QDomText textNode carMessage.createTextNode(carMessageParamList.at(i -1));
 attribNode"attrib");
        attribNode.setAttribute("param",192);"> carMessageNameList.at(i        attribNode.appendChild(textNode);
        carNode.appendChild(attribNode);
        carMessage.appendChild(carNode);
 fileNameQFileDialog::getSaveFileName(this,0);">"Save",128);">Qlatin1String("./testDome"),0);">"*.xml");
if(!fileName.endsWith("xml")))
        fileName +=".xml");
 
 
QFile file(fileName);
if(!file.open(qiodevice::writeonly |Append))
return;
 
 
QTextStream stream(&file);
    carMessage.save(stream,128);">4);
    file.close();
    ++m_carId;
}
4.源码部分解释:
 
 
a.QDomDocument carMessage;
生成一个QT创建一些文本文件的类的对象, 如xml, world等。
 
 
b.	
    } //这些代码是为了写xml文件头, m_carId这里是为了多次添加时, 只写一次文件头。
c. 
 carMessageNameList;这里的字符串容器保存的是后面需要用上的参数和内容
 
 
d.
 carNode; 当一个xml创建后, 是需要对应的元素的。 无论是第几级, 都是用这个类进行增加对应的item; 如下面图中的<car> , <attrib>
 
 
e.
attribNode.setAttribute
这是每一级item对应的属性增加, 如 id="1",  param="排量"
 
 
f.
 textNode用于写元素中间的内容, 如: 1000ml,10万等。
 
 
g.
 
 
".xml");
 
 
这里的功能是给用户手动选择一个地方保存, 并如果在未填写后缀名时, 加上后缀名。
 
 
h.
 stream(&file);
通过文本流的方式把添加内容写xml文件中, 
Append方式为可以原文件内容上继续添加, 不用清空原文件内容

5.运行效果图:

原文地址:https://www.jb51.cc/xml/293460.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。