{"id":460,"date":"2010-11-19T00:57:13","date_gmt":"2010-11-19T00:57:13","guid":{"rendered":"http:\/\/realnorth.net\/blog\/?p=460"},"modified":"2010-11-19T00:57:13","modified_gmt":"2010-11-19T00:57:13","slug":"consumiendo-xml-con-qml","status":"publish","type":"post","link":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/","title":{"rendered":"Consumiendo XML con QML"},"content":{"rendered":"<p>Consumir XML en QML es algo casi trivial, para ello contamos con el elemento <a href=\"http:\/\/doc.qt.nokia.com\/4.7-snapshot\/qml-xmllistmodel.html\" target=\"_blank\">XmlListModel<\/a> que har\u00e1 de data source de un <a href=\"http:\/\/doc.qt.nokia.com\/4.7-snapshot\/qml-listview.html\" target=\"_blank\">ListView<\/a> en el ejemplo a continuaci\u00f3n, el <a href=\"http:\/\/doc.qt.nokia.com\/4.7-snapshot\/qml-xmllistmodel.html\" target=\"_blank\">XmlListModel<\/a> cuenta con una id, un source, que en este caso hace uso de la Weather API de Yahoo, luego vienen los <a href=\"http:\/\/doc.qt.nokia.com\/4.7-snapshot\/qml-xmlrole.html\" target=\"_blank\">XmlRole<\/a> 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.<\/p>\n<p>A continuaci\u00f3n tenemos un delegate, en donde especificamos que datos vamos a consumir, el layout y la apariencia que tendran, por ultimo el <a href=\"http:\/\/doc.qt.nokia.com\/4.7-snapshot\/qml-listview.html\" target=\"_blank\">ListView<\/a> 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\u00edan el <a href=\"http:\/\/doc.qt.nokia.com\/4.7-snapshot\/qml-listview.html\" target=\"_blank\">ListView<\/a>, como bonus, el <a href=\"http:\/\/doc.qt.nokia.com\/4.7-snapshot\/qml-listview.html\" target=\"_blank\">ListView<\/a> cuenta con kinetic scroll, el cual nos da unos puntos extras en el apartado de UX con 0 esfuerzo por parte nuestra.<\/p>\n<pre>\nimport Qt 4.7\n\nRectangle {\n    width: 640\n    height: 360\n\n    XmlListModel {\n        id: weatherModel\n        source: &quot;http:\/\/weather.yahooapis.com\/forecastrss?w=468739&amp;amp;amp;amp;amp;amp;amp;amp;amp;u=c&quot;\n        query: &quot;\/rss\/channel\/item&quot;\n        XmlRole {\n            name: &quot;title&quot;\n            query: &quot;title\/string()&quot;\n        }\n        XmlRole {\n            name: &quot;description&quot;\n            query: &quot;description\/string()&quot;\n        }\n    }\n\n    Component {\n        id: weatherDelegate\n            Item {\n                anchors.fill: parent\n                Column {\n                    Text {\n                        text:title\n                    }\n                    Text {\n                        text:description\n                    }\n                }\n            }\n        }\n\n    ListView {\n        id: weatherList\n        anchors.fill: parent\n        model: weatherModel\n        delegate: weatherDelegate\n    }\n}\n<\/pre>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/realnorth.net\/blog\/wp-content\/uploads\/2010\/11\/home-paulo-Qt-Projects-WeatherFeeds-WeatherFeeds.qml-Qt-QML-Viewer_003.png\" alt=\"Consumiendo XML con QML\" title=\"Consumiendo XML con QML\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, el XmlListModel cuenta con una id, un source, que en este caso&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[43,44,46],"class_list":["post-460","post","type-post","status-publish","format-standard","hentry","category-development","tag-qml","tag-qt","tag-qt-quick"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, 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\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"admin\"\/>\n\t<meta name=\"keywords\" content=\"qml,qt,qt quick,development\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"blog - realnorth |\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Consumiendo XML con QML - blog - realnorth\" \/>\n\t\t<meta property=\"og:description\" content=\"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, 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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2010-11-19T00:57:13+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2010-11-19T00:57:13+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Consumiendo XML con QML - blog - realnorth\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, 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\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#article\",\"name\":\"Consumiendo XML con QML - blog - realnorth\",\"headline\":\"Consumiendo XML con QML\",\"author\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/realnorth.net\\\/blog\\\/wp-content\\\/uploads\\\/2010\\\/11\\\/home-paulo-Qt-Projects-WeatherFeeds-WeatherFeeds.qml-Qt-QML-Viewer_003.png\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#articleImage\"},\"datePublished\":\"2010-11-19T00:57:13-03:00\",\"dateModified\":\"2010-11-19T00:57:13-03:00\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#webpage\"},\"articleSection\":\"Development, QML, Qt, Qt Quick\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/realnorth.net\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Development\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/category\\\/development\\\/#listItem\",\"position\":2,\"name\":\"Development\",\"item\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/category\\\/development\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#listItem\",\"name\":\"Consumiendo XML con QML\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#listItem\",\"position\":3,\"name\":\"Consumiendo XML con QML\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/category\\\/development\\\/#listItem\",\"name\":\"Development\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/#organization\",\"name\":\"blog - realnorth\",\"url\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/aeb7cc12fb24fd45da6313367c7f27e23f742b893b153d630b8bc132e3745767?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"admin\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#webpage\",\"url\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/\",\"name\":\"Consumiendo XML con QML - blog - realnorth\",\"description\":\"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\\u00e1 de data source de un ListView en el ejemplo a continuaci\\u00f3n, 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\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/consumiendo-xml-con-qml\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2010-11-19T00:57:13-03:00\",\"dateModified\":\"2010-11-19T00:57:13-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/\",\"name\":\"blog - realnorth\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/realnorth.net\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Consumiendo XML con QML - blog - realnorth","description":"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, 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","canonical_url":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/","robots":"max-image-preview:large","keywords":"qml,qt,qt quick,development","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#article","name":"Consumiendo XML con QML - blog - realnorth","headline":"Consumiendo XML con QML","author":{"@id":"https:\/\/realnorth.net\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/realnorth.net\/blog\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/realnorth.net\/blog\/wp-content\/uploads\/2010\/11\/home-paulo-Qt-Projects-WeatherFeeds-WeatherFeeds.qml-Qt-QML-Viewer_003.png","@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#articleImage"},"datePublished":"2010-11-19T00:57:13-03:00","dateModified":"2010-11-19T00:57:13-03:00","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#webpage"},"isPartOf":{"@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#webpage"},"articleSection":"Development, QML, Qt, Qt Quick"},{"@type":"BreadcrumbList","@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/realnorth.net\/blog#listItem","position":1,"name":"Home","item":"https:\/\/realnorth.net\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/realnorth.net\/blog\/category\/development\/#listItem","name":"Development"}},{"@type":"ListItem","@id":"https:\/\/realnorth.net\/blog\/category\/development\/#listItem","position":2,"name":"Development","item":"https:\/\/realnorth.net\/blog\/category\/development\/","nextItem":{"@type":"ListItem","@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#listItem","name":"Consumiendo XML con QML"},"previousItem":{"@type":"ListItem","@id":"https:\/\/realnorth.net\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#listItem","position":3,"name":"Consumiendo XML con QML","previousItem":{"@type":"ListItem","@id":"https:\/\/realnorth.net\/blog\/category\/development\/#listItem","name":"Development"}}]},{"@type":"Organization","@id":"https:\/\/realnorth.net\/blog\/#organization","name":"blog - realnorth","url":"https:\/\/realnorth.net\/blog\/"},{"@type":"Person","@id":"https:\/\/realnorth.net\/blog\/author\/admin\/#author","url":"https:\/\/realnorth.net\/blog\/author\/admin\/","name":"admin","image":{"@type":"ImageObject","@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/aeb7cc12fb24fd45da6313367c7f27e23f742b893b153d630b8bc132e3745767?s=96&d=mm&r=g","width":96,"height":96,"caption":"admin"}},{"@type":"WebPage","@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#webpage","url":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/","name":"Consumiendo XML con QML - blog - realnorth","description":"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, 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","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/realnorth.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/#breadcrumblist"},"author":{"@id":"https:\/\/realnorth.net\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/realnorth.net\/blog\/author\/admin\/#author"},"datePublished":"2010-11-19T00:57:13-03:00","dateModified":"2010-11-19T00:57:13-03:00"},{"@type":"WebSite","@id":"https:\/\/realnorth.net\/blog\/#website","url":"https:\/\/realnorth.net\/blog\/","name":"blog - realnorth","inLanguage":"en-US","publisher":{"@id":"https:\/\/realnorth.net\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"blog - realnorth |","og:type":"article","og:title":"Consumiendo XML con QML - blog - realnorth","og:description":"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, 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","og:url":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/","article:published_time":"2010-11-19T00:57:13+00:00","article:modified_time":"2010-11-19T00:57:13+00:00","twitter:card":"summary","twitter:title":"Consumiendo XML con QML - blog - realnorth","twitter:description":"Consumir XML en QML es algo casi trivial, para ello contamos con el elemento XmlListModel que har\u00e1 de data source de un ListView en el ejemplo a continuaci\u00f3n, 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"},"aioseo_meta_data":{"post_id":"460","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-02-07 23:14:56","updated":"2025-10-27 21:17:45","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/realnorth.net\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/realnorth.net\/blog\/category\/development\/\" title=\"Development\">Development<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tConsumiendo XML con QML\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/realnorth.net\/blog"},{"label":"Development","link":"https:\/\/realnorth.net\/blog\/category\/development\/"},{"label":"Consumiendo XML con QML","link":"https:\/\/realnorth.net\/blog\/consumiendo-xml-con-qml\/"}],"_links":{"self":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/posts\/460","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/comments?post=460"}],"version-history":[{"count":0,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/posts\/460\/revisions"}],"wp:attachment":[{"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/media?parent=460"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/categories?post=460"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/realnorth.net\/blog\/wp-json\/wp\/v2\/tags?post=460"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}