Sur cette page

XmlListModelRole QML Type

Pour spécifier un rôle à un XmlListModel. Plus...

Import Statement: import QtQml.XmlListModel

Propriétés

Description détaillée

Voir aussi Qt Qml.

Documentation sur les propriétés

attributeName : string

L'attribut de l'élément XML qui sera utilisé pour lire les données. L'élément XML est spécifié par la propriété elementName.

Par exemple, le modèle suivant a un rôle nommé "title", qui lit les données à partir de l'élément XML <title>. Il possède également un autre rôle nommé "timestamp", qui utilise le même élément XML <title>, mais lit son attribut "created" pour en extraire la valeur réelle.

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 }
}

Lorsque l'attributName est spécifié, l'adresse elementName peut être laissée vide. Dans ce cas, c'est l'attribut de l'élément XML de premier niveau de la requête qui sera lu.

Par exemple, si vous avez le document XML suivant :

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

Pour extraire les titres du document, vous avez besoin du modèle suivant :

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

Si vous n'avez pas besoin d'analyser les attributs de l'élément XML spécifié, laissez simplement cette propriété vide.

Voir aussi elementName.

elementName : string

Le nom de l'élément XML, ou un chemin vers l'élément XML, qui sera utilisé pour lire les données. L'élément doit contenir du texte.

En option, la propriété attributeName peut être spécifiée pour extraire les données.

Par exemple, le modèle suivant a un rôle nommé "title", qui lit les données à partir de l'élément XML <title>. Il possède également un autre rôle nommé "timestamp", qui utilise le même élément XML <title>, mais lit son attribut "created" pour en extraire la valeur réelle.

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 }
}

Lorsque le site attributeName est spécifié, le nom de l'élément (elementName) peut être laissé vide. Dans ce cas, c'est l'attribut de l'élément XML de premier niveau de la requête qui sera lu.

Par exemple, si vous avez le document XML suivant :

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

Pour extraire les titres du document, vous avez besoin du modèle suivant :

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

La propriété elementName peut en fait contenir un chemin vers l'élément XML imbriqué. Tous les éléments du chemin doivent être reliés par le caractère '/'.

Par exemple, si vous avez le document xml suivant :

<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>

Vous pouvez extraire le nombre de pages avec le rôle suivant :

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

Remarque : le chemin d'accès à l'élément ne doit pas commencer ou se terminer par '/'.

Voir aussi attributeName.

name : string

Le nom du rôle. Ce nom est utilisé pour accéder aux données du modèle pour ce rôle.

Par exemple, le modèle suivant a un rôle nommé "title", auquel on peut accéder à partir du délégué de la vue :

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

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.