Тип QML XmlListModel
Для задания только для чтения модели, использующей выражения XPath. Подробнее...
| Заявление импорта: | import QtQuick.XmlListModel 2.15 |
Свойства
- count : int
- namespaceDeclarations : string
- progress : real
- query : string
- roles : список<XmlRole>
- source : url
- status : перечисление
- xml : string
Методы
- errorString()
- объект get(int 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 }
} Данные 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 : 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 не из удаленного источника, прогресс становится 1,0 сразу после считывания данных.
Обратите внимание, что когда прогресс равен 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(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;
reload()
Перезагружает модель.
Если ключевые роли не были указаны, все существующие данные модели удаляются, и модель перестраивается с нуля.
В противном случае элементы добавляются только в том случае, если модель уже не содержит элементы с соответствующими значениями ключевой роли.
См. также Использование ключевых XML-ролей и XmlRole::isKey.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtquick-xmllistmodel-xmllistmodel.html