首页 > 代码库 > Qt Dom方式写xml,以及保存到xml文件中
Qt Dom方式写xml,以及保存到xml文件中
#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的内容。
本文出自 “whylinux” 博客,请务必保留此出处http://whylinux.blog.51cto.com/10900429/1905842
Qt Dom方式写xml,以及保存到xml文件中
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。