话不多说,直接而看代码,效果可以自己运行看看.记得在Pro文件里加上xml模块.
方式一 QXmlStreamWriter
QString sXml;//存储生成的XML
QXmlStreamWriter xswWriter(&sXml);
xswWriter.setAutoFormatting(true);
xswWriter.writeStartDocument("1.0",true);
//根节点开始
xswWriter.writeStartElement("message");
//子节点1开始
xswWriter.writeStartElement("head");//创建标签名字
xswWriter.writeAttribute("packtype","21");//创建属性名字及属性值
xswWriter.writeAttribute("sessionid","31");
xswWriter.writeAttribute("fromip","192.168.84.244");
xswWriter.writeAttribute("toip","");
xswWriter.writeEndElement();//结束子节点1
//子节点2开始
xswWriter.writeStartElement("body");
xswWriter.writeAttribute("cmdid","B002");
xswWriter.writeAttribute("errorcode","");
xswWriter.writeAttribute("errormsg","");
xswWriter.writeEndElement();//结束子节点2
//结束根节点
xswWriter.writeEndElement();
//结束文档
xswWriter.writeEndDocument();
return sXml;
方式二 DOM
QString sXmlSrc;//存储生成的xml
QDomDocument dDoc;
QString sHeader("version=\"1.0\" encoding=\"UTF-8\"");
dDoc.appendChild(dDoc.createProcessingInstruction("xml", sHeader));//生成说明
//生成根节点
QDomElement sRootElement = dDoc.createElement("message");
dDoc.appendChild(sRootElement);
//生成head标签
QDomElement deHeadElement = dDoc.createElement( "head" );
deHeadElement.setAttribute("packtype", "21");
deHeadElement.setAttribute("sessionid","31");
deHeadElement.setAttribute("fromip", "192.168.84.244");
deHeadElement.setAttribute("toip","");
sRootElement.appendChild(deHeadElement);
//生成body标签
QDomElement deBodyElement = dDoc.createElement( "body" );
deBodyElement.setAttribute("cmdid","");
deBodyElement.setAttribute("stbip","");
sRootElement.appendChild(deBodyElement);
QTextStream tsOut(&sXmlSrc);
dDoc.save(tsOut,4);
return sXmlSrc;