#include <QString>
#include <QDebug>
#include <stdio.h>
#include <stdlib.h>
#include <QDomDocument>
#include <QtXml>
//XML DOM的方式
int main(int argc, char *argv[])
{
QByteArray array;
QDomDocument doc;
QDomProcessingInstruction instruction;
QDomText text;
instruction = doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");
doc.appendChild(instruction); //doc开头加入instruction
QDomElement root = doc.createElement("root"); //创建root节点
QDomElement common = doc.createElement("common"); //创建节点common
QDomElement meters = doc.createElement("meters"); //创建节点meters
QDomElement meter = doc.createElement("meter");
QDomElement function = doc.createElement("function");
meters.setAttribute("total", "0"); //设置属性名字和值
meter.setAttribute("id", "0001");
meter.setAttribute("name", "0001");
function.setAttribute("id", "01"); //
function.setAttribute("error", "");
meters.appendChild(meter);
common.appendChild(meters); //将meters节点添加到common节点中
doc.appendChild(root); //将root节点添加到doc
root.appendChild(common); //将common节点添加到root节点中
meter.appendChild(function);
meters.setAttribute("total", "12");
array = doc.toByteArray();
printf("%s", array.data());
//将xml保存到文件中
QFile file("./why.xml");
file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text);
QTextStream out(&file);
out.setCodec("UTF-8");
doc.save(out, 4, QDomNode::EncodingFromTextStream);
file.close();
return 0;
}
输出的xml内容为:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<common>
<meters total="12">
<meter id="0001" name="0001">
<function error="" id="01"/>
</meter>
</meters>
</common>
</root>
DOM方式,在内存中形成一个树状结构,在内存中可以实时的改变xml中的内容。但是耗内存较大,在xml内容较少时可以考虑使用。
而SAX,
QXmlStreamWriter的方式是顺序的,只能按照顺序去添加xml内容,无法回头在改动xml的内容。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。