structPUBLIC_DATA_SEND{boolifrealtimedata;boolifdatasend;boolconfirmflag;intsendtimes;intsendtime;QList<QString>waitconfirmterminal;QList<QString>DateTimeList;charcapturetime[20];}SEND;intpackage_public_data(QDomDocument*doc,PUBLIC_DATA_SEND*ppublicdata,intclient_num,intdatatype,QDomElement*root,QDomElement*data){QDomElementmeters=doc->createElement("meters");meters.setAttribute("total","0");QDomTexttextNode;for(inti=0;i<10;i++){QDomElementmeter=doc->createElement("meter");meter.setAttribute("id","445");for(intj=0;j<5;j++){QDomElementvar=doc->createElement("var");var.setAttribute("e","");var.setAttribute("e","1");textNode=doc->createTextNode("123.45864");var.appendChild(textNode);meter.appendChild(var);}meters.appendChild(meter);}meters.setAttribute("total","10");data->appendChild(meters);return0;}intpublicdata_xm(intflag,PUBLIC_DATA_SEND*ppublicdata,char*buf,intclient_num,char*name){QDomDocument*doc=newQDomDocument();QDomProcessingInstructioninstruction;QDomTexttextNode;instruction=doc->createProcessingInstruction("xml","version=\"1.0\"encoding=\"UTF-8\"");QDomElementroot=doc->createElement("root");QDomElementcommon=doc->createElement("common");QDomElementbuilding_id=doc->createElement("building_id");QDomElementgateway_id=doc->createElement("gateway_id");QDomElementtype=doc->createElement("type");QDomElementdata=doc->createElement("data");QDomElementtime=doc->createElement("time");doc->appendChild(root);root.appendChild(common);common.appendChild(building_id);common.appendChild(gateway_id);common.appendChild(type);root.appendChild(data);data.appendChild(time);textNode=doc->createTextNode("125479601");building_id.appendChild(textNode);textNode=doc->createTextNode("99");gateway_id.appendChild(textNode);textNode=doc->createTextNode("energy_data");type.appendChild(textNode);QStringdatetime="2017-03-1315:50";textNode=doc->createTextNode(datetime);time.appendChild(textNode);if(flag==1){data.setAttribute("operation","report");}elseif(flag==2){data.setAttribute("operation","continuous");}elseif(flag==3){data.setAttribute("operation","history");}package_public_data(doc,ppublicdata,client_num,flag,&root,&data);printf("publicdataxml:\n%s\n",QString::fromLocal8Bit(doc->toByteArray()).toUtf8().data());intlen=doc->toString().replace(QRegExp(">\\s+<"),"><").toLatin1().length();strcpy(buf,doc->toString().replace(QRegExp(">\\s+<"),"><").toLatin1());deletedoc;returnlen;}intmain(intargc,char*argv[]){charbuf[4096];intlen=0;len=publicdata_xm(1,&SEND,buf,1,"dom");printf("domxmllen=%d:\n%s\n",len,buf);return0;}



DOM格式的xml,使用内存大,建议使用在xml内容小的情况下,dom格式的xml为树状结构,可以随意删除修改xml


输出xml内容为

<root><common><building_id>125479601</building_id><gateway_id>99</gateway_id><type>energy_data</type></common><dataoperation="report"><time>2017-03-1315:50</time><meterstotal="10"><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter></meters></data></root>

<root><common><building_id>125479601</building_id><gateway_id>99</gateway_id><type>energy_data</type></common><dataoperation="report"><time>2017-03-1315:50</time><meterstotal="10"><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter><meterid="445"><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var><vare="1">123.45864</var></meter></meters></data></root>