Qt Dom方式写xml(二)
admin
2023-07-31 12:40:10
0
struct PUBLIC_DATA_SEND
{
    bool ifrealtimedata;
    bool ifdatasend;
    bool confirmflag;
    int sendtimes;
    int sendtime;
    QList waitconfirmterminal;
    QList DateTimeList;
    char capturetime[20];
}SEND;


int package_public_data(QDomDocument *doc, PUBLIC_DATA_SEND *ppublicdata, int client_num, int datatype, QDomElement *root, QDomElement *data)
{
    QDomElement meters = doc->createElement("meters");
    meters.setAttribute("total", "0");

    QDomText textNode;



    for ( int i = 0; i < 10; i++)
    {
        QDomElement meter =  doc->createElement("meter");
        meter.setAttribute("id", "445");

        for ( int j = 0; j < 5; j++ )
        {
            QDomElement var = 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);

    return 0;
}


int publicdata_xm(int flag, PUBLIC_DATA_SEND *ppublicdata, char *buf, int client_num, char *name)
{
    QDomDocument *doc = new QDomDocument();
    QDomProcessingInstruction instruction;
    QDomText textNode;
    instruction = doc->createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\"");

    QDomElement root = doc->createElement("root");
    QDomElement common = doc->createElement("common");
    QDomElement building_id = doc->createElement("building_id");
    QDomElement gateway_id = doc->createElement("gateway_id");
    QDomElement type = doc->createElement("type");
    QDomElement data = doc->createElement("data");
    QDomElement time = 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);

    QString datetime = "2017-03-13 15:50";
    textNode = doc->createTextNode(datetime);
    time.appendChild(textNode);

    if ( flag == 1 )
    {
        data.setAttribute("operation", "report");
    }
    else if ( flag == 2 )
    {
        data.setAttribute("operation", "continuous");
    }
    else if ( flag == 3 )
    {
        data.setAttribute("operation", "history");
    }

    package_public_data(doc, ppublicdata, client_num, flag, &root, &data);

    printf("publicdata xml:\n%s\n",QString::fromLocal8Bit(doc->toByteArray()).toUtf8().data());

    int len = doc->toString().replace(QRegExp(">\\s+<"),"><").toLatin1().length();

    strcpy(buf, doc->toString().replace(QRegExp(">\\s+<"),"><").toLatin1());

    delete doc;

    return len;
}

int main(int argc, char *argv[])
{
    char buf[4096];

    int len = 0;
    len = publicdata_xm(1, &SEND, buf, 1, "dom");

    printf("dom xml len = %d: \n%s\n", len, buf);

    return 0;
}



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


输出xml内容为


 
  125479601
  99
  energy_data
 
 
  
  
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
   
    123.45864
    123.45864
    123.45864
    123.45864
    123.45864
   
  
 

12547960199energy_data123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864123.45864


相关内容

热门资讯

瀚云通取得运动型线缆保护拖链专... 国家知识产权局信息显示,深圳市瀚云通科技有限公司取得一项名为“一种运动型线缆的保护拖链”的专利,授权...
第六届成渝双城青少年科技雏鹰研... 人民网重庆7月7日电 (记者胡虹)7月6日,由重庆市科协和成都市科协联合主办的第六届成渝双城青少年科...
三星Galaxy F70 Pr... IT之家 7 月 7 日消息,消息源 Mohammed Khatri 发文,透露三星旗下一款 Gal...
央媒关注!成都太空算力加速布局 7月6日,经济日报发布文章《太空算力加速布局》,其中关注成都构建从卫星制造到算力服务的全链条产业体系...
投资中国,与未来共舞——202... 7月8日下午,一场汇聚顶级资本力量与硬核科技创新力量的盛会——2026新京报贝壳财经年会未来大会 “...
美国恢复对伊朗石油制裁 根据美国财政部外国资产控制办公室当地时间7月7日消息,美国撤销一项授权允许伊朗石油销售的通用许可,相...
暗示要对梅洛尼下达限制令后,特... 当地时间7月7日,正在土耳其参加北约峰会的美国总统特朗普称意大利总理梅洛尼是“好人”,尽管他上周末曾...
广西近4000名被困师生欢呼:... 解放军来了!广西贵港高级中学近4000名师生被困,下午1点26分,解放军冲锋舟全速挺进救援现场,带着...
埃尔多安举行欢迎仪式,特朗普罕... 美国总统特朗普7月7日抵达土耳其首都安卡拉,参加即将在这里举行的北约峰会。当天,在土耳其总统埃尔多安...
纪念高善文:那个敢说真话、爱自... 对于无数投资者而言,高善文不仅是一位经济学家,更是中国证券研究行业从起步到成熟的见证者与塑造者。作者...