Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XmlListModel有没有办法不显示XmlRole为空的项?_Xml_Qt_Qml - Fatal编程技术网

XmlListModel有没有办法不显示XmlRole为空的项?

XmlListModel有没有办法不显示XmlRole为空的项?,xml,qt,qml,Xml,Qt,Qml,我想使用以下XmlListModel XmlListModel { xml: "<feed>" +" <entry><title>Bob</title></entry>" +" <entry><title></title></entry>" +"</feed>" query: "/feed/entry"

我想使用以下XmlListModel

XmlListModel {
    xml: "<feed>"
         +"  <entry><title>Bob</title></entry>"
         +"  <entry><title></title></entry>"
         +"</feed>"

    query: "/feed/entry"

    XmlRole { name: "title"; query: "title/string()" }
}
XmlListModel{
xml:“
+“鲍勃”
+"  "
+""
查询:“/feed/entry”
XmlRole{name:“title”;查询:“title/string()”}
}
以及不显示标题为空的条目

当然,XML来自我不拥有的远程源

我没有发现关于这种可能性的信息

有什么方法可以做到这一点吗?

的任务只是从XML中获取项目,因此过滤必须是一个不同的过程。对于这种情况,您可以使用(C++)或(QML),在这种情况下,我将显示第二种方法:

import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.XmlListModel 2.14
import QtQml.Models 2.14

ApplicationWindow {
    width: 400
    height: 300
    visible: true
    ListView {
        id: listView
        anchors.fill: parent
        model: delegateModel
    }
    DelegateModel {
        id: delegateModel
        model: xmlmodel
        delegate: Text {
            id: name
            text: qsTr("title: ") + title
        }
        items.onChanged: update()
        groups: DelegateModelGroup {
            id: visibleItems
            name: "visible"
            includeByDefault: false
        }
        filterOnGroup: "visible"
        function update() {
            if (items.count > 0)
                items.setGroups(0, items.count, "items");
            var visible = [];
            for (var i = 0; i < items.count; ++i) {
                var item = items.get(i);
                // filter items
                if (item.model.title !== "") {
                    visible.push(item);
                }
            }
            for (i = 0; i < visible.length; ++i) {
                item = visible[i];
                item.inVisible = true;
                if (item.visibleIndex !== i)
                    visibleItems.move(item.visibleIndex, i, 1);
            }
        }
    }
    XmlListModel {
        id: xmlmodel
        xml: "<feed>"
             +"  <entry><title>Bob</title></entry>"
             +"  <entry><title></title></entry>"
             +"</feed>"

        query: "/feed/entry"
        XmlRole { name: "title"; query: "title/string()" }
    }
}
导入QtQuick 2.14
导入QtQuick.Controls 2.14
导入QtQuick.XmlListModel 2.14
导入qtl.Models 2.14
应用程序窗口{
宽度:400
身高:300
可见:正确
列表视图{
id:listView
锚定。填充:父级
模型:委派模型
}
委托模型{
id:delegateModel
模型:xmlmodel
代表:文本{
id:姓名
正文:qsTr(“标题:”)+标题
}
items.onChanged:update()
组:DelegateModelGroup{
id:可见项目
名称:“可见”
includeByDefault:false
}
过滤器组:“可见”
函数更新(){
如果(items.count>0)
items.setGroups(0,items.count,“items”);
可见var=[];
对于(变量i=0;i
XmlListModel
query
属性使用XPath,您可以在这里进行一些过滤

拥有
查询:“/feed/entry[title!=''”
将满足您的需求