我想从resources.qrc文件中加载xsd架构。这部分来自* .qrc:
<qresource prefix="/xml">
<file alias="my-custom.xsd">xml/my-custom.xsd</file>
</qresource>
此xsd为VALID(在W3C验证器上测试)!
我不想从本地文件加载此架构。因为我想把它编译为资源。我的目标:单个可执行文件,没有其他文件而不需要安装(只使用* .so)。
我查看了Qt(QXmlSchema)文档,这里我们有3种加载方式:
bool load(const QUrl &source)
bool load(QIODevice *source, const QUrl &documentUri = QUrl())
bool load(const QByteArray &data, const QUrl &documentUri = QUrl())
我试试:
QXmlSchema schema;
schema.load(QUrl(":/xml/my-custom.xsd"));
但它总是无效的。我认为这是QUrl的无效值。或?
如何更正此加载方法中的传递资源数据?有可能吗?
UPD:抱歉愚蠢的问题。它有效:
QFile schemaData(":/xml/my-custom.xsd");
QXmlSchema schema;
schemaData.open(QFile::ReadOnly);
schema.load(schemaData.readAll());