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 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图