QT5。如何从resources.qrc加载xsd架构?

时间:2017-12-29 10:43:25

标签: xml qt xsd qt5

我想从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());

0 个答案:

没有答案