XmlListModelRole QML 类型

用于指定 XmlListModel 的角色。 更多...

导入语句import QtQml.XmlListModel

属性

详细描述

另请参阅 Qt Qml.

属性文档

attributeName : string

将要用来读取数据的 XML 元素的属性。XML 元素由 elementName 属性指定。

例如,以下模型有一个名为 "title" 的角色,它从 XML 元素 <title> 读取数据。它还有一个名为 "timestamp" 的角色,使用同一个 XML 元素 <title>,但读取其 "created" 属性以提取实际值。

XmlListModel {
    id: xmlModel
    source: "file.xml"
    query: "/documents/document"
    XmlListModelRole { name: "title"; elementName: "title" }
    XmlListModelRole {
        name: "timestamp"
        elementName: "title"
        attributeName: "created"
    }
}

ListView {
    anchors.fill: parent
    model: xmlModel
    delegate: Text { text: title + " created on " + timestamp }
}

当指定了 attributeName 时,可以将 elementName 留空。在这种情况下,将读取查询顶层 XML 元素的属性。

例如,如果您有以下 XML 文档

<documents>
    <document title="Title1"/>
    <document title="Title2"/>
</documents>

要提取文档标题,您需要以下模型

XmlListModel {
    id: xmlModel
    source: "file.xml"
    query: "/documents/document"
    XmlListModelRole {
        name: "title"
        elementName: ""
        attributeName: "title"
    }
}

如果不需要解析指定的 XML 元素的任何属性,请简单地保留此属性为空。

另请参阅 elementName.


elementName : string

要读取数据的 XML 元素的名称或路径。元素必须实际包含文本。

可选地可以指定 attributeName 属性以提取数据。

例如,以下模型有一个名为 "title" 的角色,它从 XML 元素 <title> 读取数据。它还有一个名为 "timestamp" 的角色,使用同一个 XML 元素 <title>,但读取其 "created" 属性以提取实际值。

XmlListModel {
    id: xmlModel
    source: "file.xml"
    query: "/documents/document"
    XmlListModelRole { name: "title"; elementName: "title" }
    XmlListModelRole {
        name: "timestamp"
        elementName: "title"
        attributeName: "created"
    }
}

ListView {
    anchors.fill: parent
    model: xmlModel
    delegate: Text { text: title + " created on " + timestamp }
}

当指定了 attributeName 时,可以将 elementName 留空。在这种情况下,将读取查询顶层 XML 元素的属性。

例如,如果您有以下 XML 文档

<documents>
    <document title="Title1"/>
    <document title="Title2"/>
</documents>

要提取文档标题,您需要以下模型

XmlListModel {
    id: xmlModel
    source: "file.xml"
    query: "/documents/document"
    XmlListModelRole {
        name: "title"
        elementName: ""
        attributeName: "title"
    }
}

elementName 属性实际上可以包含嵌套 XML 元素的路径。路径中的所有元素都必须使用 '/' 字符连接。

例如,如果您有以下 XML 文档

<documents>
    <document>
        <title>Title1</title>
        <info>
            <num_pages>10</num_pages>
        </info>
    </document>
    <document>
        <title>Title2</title>
        <info>
            <num_pages>20</num_pages>
        </info>
    </document>
</documents>

您可以使用以下角色提取页数

XmlListModel {
    id: xmlModel
    source: "file.xml"
    query: "/documents/document"
    // ...
    XmlListModelRole {
        name: "pages"
        elementName: "info/num_pages"
    }
}

注意: 元素路径的起始或结束位置不应该是 '/'

另请参阅 attributeName.


name : string

角色的名称。此名称用于访问此角色的模型数据。

例如,以下模型中有一个名为 "title" 的角色,可以从视图的代理处访问

XmlListModel {
    id: xmlModel
    source: "file.xml"
    query: "/documents/document"
    XmlListModelRole { name: "title"; elementName: "title" }
}
ListView {
    model: xmlModel
    delegate: Text { text: title }
}

© 2024 The Qt Company Ltd. 本文件中包含的文档贡献是其各自所有者的版权。提供的文档根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 条款授权。Qt 及其相关标志是芬兰和/或全世界 The Qt Company Ltd. 的商标。所有其他商标均为其各自所有者的财产。