QT操作XML解析时QXmlStreamReader出现了n1:的解决方法

分析为命名空间的问题。
解决方案

bool exportCfg::writeSCDFile(QDir exportDir)
{
    // 读取XML文件
    QFile filexml(":/prefix/image/****.xml");
    if (!filexml.open(QIODevice::ReadOnly | QIODevice::Text)) {
        return -1;
    }
    // 创建QXmlStreamReader对象
    QXmlStreamReader xml(&filexml);
    // 创建XML文件
    QFile xmlfile(exportDir.path () +"/1**.xml");
    if (!xmlfile.open(QIODevice::WriteOnly | QIODevice::Text)) {
        return -1;
    }
    // 创建QXmlStreamWriter对象
    QXmlStreamWriter xmlWriter(&xmlfile);
    xmlWriter.setAutoFormatting(true); // 设置自动格式化
    while (!xml.atEnd() && !xml.hasError()) {
        xml.setNamespaceProcessing(false);//取消命名空间
        xmlWriter.writeCurrentToken(xml);
        if (xml.isStartElement() && xml.name() == "tag") {
            xmlWriter.writeStartElement("GSEEEEE");
        xmlWriter.writeAttribute("ldInst", "PI");
        xmlWriter.writeAttribute("cbName", QString::number(12));
            xmlWriter.writeStartElement("Address");
                xmlWriter.writeStartElement("P");
                xmlWriter.writeAttribute("type", "MAC");
                xmlWriter.writeCharacters("mac");
                xmlWriter.writeEndElement();//P
                xmlWriter.writeStartElement("P");
                xmlWriter.writeAttribute("type", "VLAN-ID");
                xmlWriter.writeCharacters(QString::number(3));
                xmlWriter.writeEndElement();//P
                xmlWriter.writeStartElement("P");
                xmlWriter.writeAttribute("type", "VLAN-PRIORITY");
                xmlWriter.writeCharacters(QString::number(2));
                xmlWriter.writeEndElement();//P
                xmlWriter.writeStartElement("P");
                xmlWriter.writeAttribute("type", "APPID");
                xmlWriter.writeCharacters("123344");
                xmlWriter.writeEndElement();//P
            xmlWriter.writeEndElement();//Address
            xmlWriter.writeStartElement("MinTime");
            xmlWriter.writeAttribute("unit", "s");
            xmlWriter.writeAttribute("multiplier", "m");
            xmlWriter.writeCharacters("2");
            xmlWriter.writeEndElement();//MinTime
            xmlWriter.writeStartElement("MaxTime");
            xmlWriter.writeAttribute("unit", "s");
            xmlWriter.writeAttribute("multiplier", "m");
            xmlWriter.writeCharacters(QString::number(50000));
            xmlWriter.writeEndElement();//MaxTime
        xmlWriter.writeEndElement();//GSE
        }
        xml.readNext();
    }
    if (xml.hasError()) {
        qDebug() << "XML Error:" << xml.errorString();
    }
    // 关闭文件
    xmlfile.close();
    filexml.close();
    return true;
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值