Qt - 如何使用导入另一个xsd文件的xsd文件验证xml文件?

时间:2014-09-23 15:23:11

标签: xml qt xsd

我使用此代码验证我的foo.xml

QFile* fileXsd = new QFile("D:\\...\\fooValidator.xsd");
if (!fileXsd->open(QIODevice::ReadOnly | QIODevice::Text))
    qWarning() << QObject::tr("Couldn't open xsd file.");    
QXmlSchema schema;
schema.load(fileXsd);
if(schema.isValid()) 
{
    QFile* fileXml = new QFile("D:\\...\\foo.xml");
    if (!fileXml->open(QIODevice::ReadOnly | QIODevice::Text))
        qWarning() << QObject::tr("Couldn't open xml file.");
    QXmlSchemaValidator validator(schema);
    if(!validator.validate(fileXml, QUrl::fromLocalFile(fileXml->fileName())))
        qCritical() << "instance document is invalid";
    else
    {
        //Ok
    }
 }

我的文件fooValidator.xsd从文件fooTypeValidator.xsd导入类型。

fooValidator.xsdfooTypeValidator.xsdfoo.xml是正确的(我被xmlvalidation吓坏了)

当我运行程序时,出现错误; <{1}}中声明的类型无法解析。

fooTypeValidator.xsd未由fooTypeValidator.xsdQXmlSchema

导入

0 个答案:

没有答案