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就有问题,就算文件不对也不应该出这样的错误吧,顶多验证不通过。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问