Consumiendo XML con QML

November 19th, 2010

Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que hará de data source de un ListView en el ejemplo a continuación, el XmlListModel cuenta con una id, un source, que en este caso hace uso de la Weather API de Yahoo, luego vienen los XmlRole los cuales describen los datos expuestos, cada uno de ellos tiene un name que sera usado luego para poder acceder a la data del role.

A continuación tenemos un delegate, en donde especificamos que datos vamos a consumir, el layout y la apariencia que tendran, por ultimo el ListView usa el model y el delegate que previamente configuramos, en este caso solo muestra un item (ver imagen abajo) ya que nuestra query solo devuelve un dato, pero si el data source devolviese mas items, cada uno de ellos poblarían el ListView, como bonus, el ListView cuenta con kinetic scroll, el cual nos da unos puntos extras en el apartado de UX con 0 esfuerzo por parte nuestra.

import Qt 4.7

Rectangle {
    width: 640
    height: 360

    XmlListModel {
        id: weatherModel
        source: "http://weather.yahooapis.com/forecastrss?w=468739&u=c"
        query: "/rss/channel/item"
        XmlRole {
            name: "title"
            query: "title/string()"
        }
        XmlRole {
            name: "description"
            query: "description/string()"
        }
    }

    Component {
        id: weatherDelegate
            Item {
                anchors.fill: parent
                Column {
                    Text {
                        text:title
                    }
                    Text {
                        text:description
                    }
                }
            }
        }

    ListView {
        id: weatherList
        anchors.fill: parent
        model: weatherModel
        delegate: weatherDelegate
    }
}

Consumiendo XML con QML

Development , , No response

No responses


Comment now!