#include<QString>#include<QDebug>#include<stdio.h>#include<stdlib.h>#include<QDomDocument>#include<QtXml>//XMLDOM的方式intmain(intargc,char*argv[]){QByteArrayarray;QDomDocumentdoc;QDomProcessingInstructioninstruction;QDomTexttext;instruction=doc.createProcessingInstruction("xml","version=\"1.0\"encoding=\"UTF-8\"");doc.appendChild(instruction);//doc开头加入instructionQDomElementroot=doc.createElement("root");//创建root节点QDomElementcommon=doc.createElement("common");//创建节点commonQDomElementmeters=doc.createElement("meters");//创建节点metersQDomElementmeter=doc.createElement("meter");QDomElementfunction=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节点添加到docroot.appendChild(common);//将common节点添加到root节点中meter.appendChild(function);meters.setAttribute("total","12");array=doc.toByteArray();printf("%s",array.data());//将xml保存到文件中QFilefile("./why.xml");file.open(QIODevice::WriteOnly|QIODevice::Truncate|QIODevice::Text);QTextStreamout(&file);out.setCodec("UTF-8");doc.save(out,4,QDomNode::EncodingFromTextStream);file.close();return0;}


输出的xml内容为:

<?xmlversion="1.0"encoding="UTF-8"?><root><common><meterstotal="12"><meterid="0001"name="0001"><functionerror=""id="01"/></meter></meters></common></root>


DOM方式,在内存中形成一个树状结构,在内存中可以实时的改变xml中的内容。但是耗内存较大,在xml内容较少时可以考虑使用。

而SAX,

QXmlStreamWriter的方式是顺序的,只能按照顺序去添加xml内容,无法回头在改动xml的内容。