You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt/QML XmlListModel无法读取XML文件问题咨询

解决XmlListModel报错"Unsupported XML version"的问题

嘿,这个问题我之前也碰到过,其实就是Qt的XmlListModel对XML版本支持的限制在搞鬼,我来帮你搞定它:

问题出在哪?

你看到的Error FODC0002: Unsupported XML version错误,核心原因很简单:你的XML文件开头声明的是XML 1.1:

<?xml version="1.1" encoding="utf-8"?> 

但Qt的XmlListModel依赖的QtXmlPatterns模块,目前只支持XML 1.0版本,完全不兼容XML 1.1的声明格式。

最快的修复方案

直接修改你的XML文件的版本声明,把version="1.1"改成version="1.0"就行,另外我还帮你补全了缺失的</rss>闭合标签(不然XML结构不完整也可能出问题):

<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"> 
<channel> 
<item> 
<title>A blog post</title> 
<pubDate>Sat, 07 Sep 2010 10:00:01 GMT</pubDate> 
</item> 
<item> 
<title>Another blog post</title> 
<pubDate>Sat, 07 Sep 2010 15:35:01 GMT</pubDate> 
</item> 
</channel>
</rss>

改完之后,你的原有QML代码不需要任何调整,点击MouseArea就能正常读取并输出item的标题内容了。

要是必须保留XML 1.1怎么办?

如果因为业务原因不能修改原XML文件的版本声明,那可以先手动读取文件内容,替换版本声明后再传给XmlListModel,给你写了个示例:

Window { 
    visible: true 
    width: 640 
    height: 480 

    XmlListModel{ 
        id: xmlModel 
        source: modifiedXmlContent
        query: "/rss/channel/item" 
        XmlRole { name: "title"; query: "title/string()" } 
        onStatusChanged: { 
            console.log("Status Changed...." , status) 
            console.log(errorString()) 
        } 
    } 

    // 存储修改后的XML内容
    property string modifiedXmlContent: ""

    Component.onCompleted: {
        var xhr = new XMLHttpRequest()
        xhr.open("GET", "Test.xml")
        xhr.onreadystatechange = function() {
            if (xhr.readyState === XMLHttpRequest.DONE) {
                // 替换XML 1.1声明为1.0
                modifiedXmlContent = xhr.responseText.replace(/<\?xml version="1.1"/, '<?xml version="1.0"')
            }
        }
        xhr.send()
    }

    MouseArea{ 
        anchors.fill: parent 
        onClicked: { 
            console.log(xmlModel.count) 
            for(var i = 0 ; i < xmlModel.count ; i++) { 
                var name = xmlModel.get(i).title 
                console.log(name) 
            } 
        } 
    }
}

内容的提问来源于stack exchange,提问作者Prasoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:07:03