我使用此代码验证我的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.xsd
,fooTypeValidator.xsd
和foo.xml
是正确的(我被xmlvalidation吓坏了)
当我运行程序时,出现错误; <{1}}中声明的类型无法解析。
fooTypeValidator.xsd
未由fooTypeValidator.xsd
或QXmlSchema