fzcbx 2017-06-06 03:15 采纳率: 0%
浏览 1095

QT QXmlSchemaValidator xml验证问题

bool CMTableWidget::XMLTest(QString XMLstr)
{
QFile file(Modpath + this->ProtocolType + QString::fromLocal8Bit(".xsd"));
if(!file.open(QIODevice::ReadOnly))
{
qDebug() << QString::fromLocal8Bit("XMLTest模板文件打开失败!");
return false;
}

QXmlSchema schema;
schema.load(&file, QUrl::fromLocalFile(file.fileName()));
if (schema.isValid() == false)
{
    qDebug() << QString::fromLocal8Bit("xsd文件无效");
    return false;
}
QByteArray data = XMLstr.toUtf8();
QBuffer buffer(&data);
buffer.open(QIODevice::ReadOnly);

QXmlSchemaValidator validator(schema);
qDebug() << buffer.data();
if (!validator.validate(&buffer))
{
    qDebug() << QString::fromLocal8Bit("xml文件无效");
    return false;
}
qDebug() << "here";
return true;

}
很普通的一个xml验证函数,从帮助中抄的,现在的问题是当我的xsd文件中使用sequence指示器时就没有问题,使用all指示器时执行到if (!validator.validate(&buffer))时候会出现程序崩溃,现象从任务管理器看是死循环(cpu占用超高,占用内存不停上升),帮忙分析一下。
xsd文件太长了就不全上了,
xs:complexType
xs:sequence

xs:complexType
xs:sequence

xs:simpleType


/xs:restriction
/xs:simpleType
/xs:element

          <xs:element name="protocol">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="iec104-c"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:element>

什么检查文件对不对的就不用说了,我用sequence没问题,改成all就有问题,就算文件不对也不应该出这样的错误吧,顶多验证不通过。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:43
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决