Тип QML XmlListModel
Для задания только для чтения модели с использованием выражений XPath. Подробнее...
| Заявление об импорте: | import QtQuick.XmlListModel 2.14 |
Свойства
- count : int
- namespaceDeclarations : string
- progress : real
- query : string
- roles : list<XmlRole>
- source : url
- status : перечисление
- xml : string
Методы
- errorString()
- объект get(index)
- 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 }
} [Отсутствует изображение qml-xmllistmodel-example.png]
Данные XmlListModel загружаются асинхронно, и status устанавливается в XmlListModel.Ready при завершении загрузки. Обратите внимание, что это означает, что при использовании XmlListModel для представления, представление не заполняется до тех пор, пока модель не загрузится.
Использование ключевых ролей XML
Вы можете определить определённые роли как "ключи", чтобы при вызове reload(), модель добавляла и обновляла только данные, содержащие новые значения для этих ключей.
Например, если роль для "pubDate" была определена так:
XmlRole { name: "pubDate"; query: "pubDate/string()"; isKey: true } Тогда при вызове reload(), модель будет добавлять и обновлять только элементы с значением "pubDate", которые ещё не присутствуют в модели.
Это полезно при отображении содержимого документов XML, которые обновляются постепенно (например, ленты RSS), чтобы избежать перерисовки всего содержимого модели в представлении.
Если указано несколько ключевых ролей, модель добавляет и обновляет только элементы с комбинированным значением всех ключевых ролей, которые ещё не присутствуют в модели.
См. также Qt Quick Demo - RSS News.
Документация свойств
count : int
Количество записей данных в модели.
namespaceDeclarations : string
Объявления пространств имен, используемые в запросах 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 : real
Указывает текущую степень выполнения загрузки источника данных XML. Это значение изменяется от 0,0 (нет загруженных данных) до 1,0 (все данные загружены). Если данные XML не из удалённого источника, progress становится 1,0 как только данные будут прочитаны.
Обратите внимание, что когда progress равен 1,0, данные XML были загружены, но ещё не загружены в модель на этом этапе. Используйте свойство status, чтобы узнать, когда данные XML были прочитаны и загружены в модель.
query : string
Абсолютный запрос XPath, представляющий базовый запрос для создания элементов модели из объектов XmlRole этой модели. Запрос должен начинаться с '/' или '//'.
roles : list<XmlRole>
Роли, доступные для этой модели.
source : url
Расположение источника данных XML.
Если оба source и xml установлены, используется xml.
status : перечисление
Указывает состояние загрузки модели, которое может быть одним из следующих:
- XmlListModel.Null - Данные XML не заданы для этой модели.
- XmlListModel.Ready - Данные XML загружены в модель.
- XmlListModel.Loading - Модель в процессе чтения и загрузки данных XML.
- XmlListModel.Error - Во время загрузки модели произошла ошибка. См. errorString() для получения подробностей об ошибке.
См. также progress.
xml : string
Это свойство содержит данные XML для этой модели, если задано.
Текст предполагается закодированным в UTF-8.
Если оба source и xml заданы, используется xml.
Документация методов
errorString()
Возвращает строку описания последней ошибки, которая произошла, если status равен XmlListModel::Error.
объект get(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;
reload()
Перезагружает модель.
Если не указаны ключевые роли, все существующие данные модели удаляются, и модель перестраивается заново.
В противном случае, элементы добавляются только если в модели ещё нет элементов с соответствующими значениями ключевых ролей.
См. также Использование ключевых ролей XML и XmlRole::isKey.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qml-qtquick-xmllistmodel-xmllistmodel.html