QT生成XML(QXmlStreamWriter或DOM)

话不多说,直接而看代码,效果可以自己运行看看.记得在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;

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼2333号程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值