Тип QML XmlListModel
Для задания только для чтения модели с помощью выражений XPath Подробнее...
| Заявление об импорте: | import QtQuick.XmlListModel 2.0 |
Свойства
- count : int
- namespaceDeclarations : строка
- progress : вещественное число
- query : строка
- roles : список<XmlRole>
- source : url
- status : перечисление
- xml : строка
Методы
- void errorString()
- объект get(int index)
- void reload()
Подробное описание
Для использования этого элемента вам необходимо импортировать модуль с помощью следующей строки:
import QtQuick.XmlListModel 2.0
XmlListModel используется для создания модели только для чтения из данных XML. Он может использоваться в качестве источника данных для элементов представления (таких как ListView, PathView, GridView) и других элементов, которые взаимодействуют с данными модели (таких как Repeater).
Например, если есть документ XML по адресу http://www.mysite.com/feed.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> XmlListModel может создать модель из этих данных, например так:
import QtQuick 2.0
import QtQuick.XmlListModel 2.0
XmlListModel {
id: xmlModel
source: "http://www.mysite.com/feed.xml"
query: "/rss/channel/item"
XmlRole { name: "title"; query: "title/string()" }
XmlRole { name: "pubDate"; query: "pubDate/string()" }
} Значение query «/rss/channel/item» указывает, что XmlListModel должен генерировать элемент модели для каждого <item> в документе XML.
Объекты XmlRole определяют атрибуты элемента модели. Здесь каждый элемент модели будет иметь атрибуты title и pubDate, которые соответствуют значениям title и pubDate соответствующего <item>. (См. XmlRole::query для получения дополнительных примеров допустимых выражений XPath для XmlRole.)
Модель может использоваться в ListView, например так:
ListView {
width: 180; height: 300
model: xmlModel
delegate: Text { text: title + ": " + pubDate }
} Данные XmlListModel загружаются асинхронно, и status устанавливается в XmlListModel.Ready при завершении загрузки. Обратите внимание, что это означает, что при использовании XmlListModel для представления представление не заполняется до тех пор, пока модель не загрузится.
Использование ключевых ролей XML
Вы можете определить определенные роли как «ключи», чтобы при вызове reload() модель добавляла и обновляла только данные, содержащие новые значения для этих ключей.
Например, если роль «pubDate» выше была определена так:
XmlRole { name: "pubDate"; query: "pubDate/string()"; isKey: true } Тогда при вызове reload() модель будет добавлять и перезагружать только элементы с значением «pubDate», которое еще не присутствует в модели.
Это полезно при отображении содержимого документов XML, которые обновляются постепенно (например, ленты RSS), чтобы избежать перерисовки всего содержимого модели в представлении.
Если указано несколько ключевых ролей, модель добавляет и перезагружает элементы только в том случае, если комбинированное значение всех ключевых ролей еще не присутствует в модели.
См. также Демонстрация Qt Quick - RSS News.
Документация по свойствам
count : int
Количество записей данных в модели.
namespaceDeclarations : строка
Объявления пространств имен, которые будут использоваться в запросах XPath.
Пространства имен должны быть объявлены так же, как в XQuery. Например, если запрашиваемый документ по адресу http://mysite.com/feed.xml использует пространство имен «http://www.w3.org/2005/Atom», это можно объявить как пространство имен по умолчанию:
XmlListModel {
source: "http://mysite.com/feed.xml"
query: "/feed/entry"
namespaceDeclarations: "declare default element namespace 'http://www.w3.org/2005/Atom';"
XmlRole { name: "title"; query: "title/string()" }
} progress : вещественное число
Это указывает текущий прогресс загрузки источника данных XML. Это значение изменяется от 0,0 (нет загруженных данных) до 1,0 (все данные загружены). Если данные XML не из удаленного источника, прогресс становится 1,0, как только данные будут считаны.
Обратите внимание, что когда прогресс равен 1,0, данные XML были загружены, но еще не загружены в модель на этом этапе. Используйте свойство status, чтобы узнать, когда данные XML были считаны и загружены в модель.
query : строка
Абсолютный запрос XPath, представляющий базовый запрос для создания элементов модели из объектов XmlRole этой модели. Запрос должен начинаться с «/» или «//».
roles : список<XmlRole>
Роли, которые нужно сделать доступными для этой модели.
source : url
Местоположение источника данных XML.
Если оба source и xml установлены, используется xml.
status : перечисление
Указывает состояние загрузки модели, которое может быть одним из следующих:
- XmlListModel.Null - Данные XML для этой модели не заданы.
- XmlListModel.Ready - Данные XML загружены в модель.
- XmlListModel.Loading - Модель в процессе чтения и загрузки данных XML.
- XmlListModel.Error - При загрузке модели произошла ошибка. Подробности об ошибке см. в errorString().
См. также progress.
xml : строка
Это свойство содержит данные XML для этой модели, если оно установлено.
Текст предполагается кодированным в UTF-8.
Если оба source и xml установлены, используется xml.
Документация по методам
void errorString()
Возвращает строковое описание последней ошибки, если status равно XmlListModel::Error.
объект get(int index)
Возвращает элемент по индексу index в модели.
Например, для модели такого вида:
XmlListModel {
id: model
source: "http://mysite.com/feed.xml"
query: "/feed/entry"
XmlRole { name: "title"; query: "title/string()" }
} Это позволит получить значение title для первого элемента модели:
var title = model.get(0).title;
void reload()
Перезагружает модель.
Если не указаны ключевые роли, все существующие данные модели удаляются, и модель создается заново.
В противном случае элементы добавляются только в том случае, если модель еще не содержит элементы с соответствующими значениями ключевых ролей.
См. также Использование ключевых ролей XML и XmlRole::isKey.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qml-qtquick-xmllistmodel-xmllistmodel.html