Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Домашнее задание 3: Модели и чтение XML #7

Closed
isitpraktika opened this issue Sep 25, 2017 · 3 comments
Closed

Comments

@isitpraktika
Copy link
Owner

Глава 6: https://qmlbook.github.io/en/ch06/index.html

Создать приложение:

  1. Чтение XML файла с произвольным количеством элементов item:
<item>
   <title>Item 1</title>
   <type>Image</type>
   <value>path_to_image/image_name.jpg</value>
</item>
<item>
   <title>Item 2</title>
   <type>Text</type>
   <value>Text Content</value>
</item>
<item>
   <title>Item 3</title>
   <type>Web</type>
   <value>URL</value>
</item>
...
  1. Построение вертикального списка (меню) с заголовками на основе элемента title
  2. При выборе элемента в списке - загрузка компонента соответствующего type, при загрузке компонент отображает содержимое value. Для загрузки компонента можно использовать Loader http://doc.qt.io/qt-5/qml-qtquick-loader.html
  3. На верхней панели всегда отображать кнопку вызова списка из пункта 2

Стандартные примеры:

@eXesaX
Copy link

eXesaX commented Oct 2, 2017

Проблема номер раз:
не могу заставить его парсить нормально XML, он понимает только один и все тут. Если больше, то отказывается что либо показывать вообще, ссылаясь на лишнюю информацию в конце файла. Курить примеры затруднительно, т.к. все ссылки на rss ленты давно сдохли, и я не вижу XML, который они там парсят.
Проблема номер два:
Начиная с версии 5.6 (текущая - 5.9) в комплект поставки Qt не входит вообще никакой модуль с поддержкой WebView, авторы говорят "вам надо - собирайте сами", при этом рекомендуя не пользоваться старыми версиями (и не очень то хочется, на самом деле) из соображений безопасности.

@eXesaX
Copy link

eXesaX commented Oct 2, 2017

<feed xmlns:im='http://itunes.apple.com/rss' xmlns='http://www.w3.org/2005/Atom' xml:lang='en'>
            <item>
               <title>Image</title>
               <type>Text</type>
               <value>file:///C:/Projects/test/assets/red_triangle.png</value>
            </item><item>
               <title>Item 2</title>
               <type>Text</type>
               <value>Text Content</value>
            </item>
            <item>
               <title>Item 3</title>
               <type>Web</type>
               <value>URL</value>
            </item></feed>
            

@Ver1Sus
Copy link

Ver1Sus commented Oct 11, 2017

Там, похоже, главное верно source указать. Вот тут чувак объясняет как сделать: ссылочка

Я сделал так, данные выводит:

        XmlListModel {
        id: searchParser
        source: "file:///C:/Users/VerSus/Documents/QtProjects/HomeWork_3/common.xml"  // contains XML content
        query: "/root/item"

        XmlRole { name: "title";    query: "title/string()" }
        XmlRole { name: "type";      query: "value/string()" }
        XmlRole { name: "value";      query: "value/string()" }

        onCountChanged: console.log("count:", count)

    }

    ListView {
        width: 180; height: 300
        model: searchParser
        delegate: Text { text: title + ": " + value }
    }

И сама XML:

<root> <item> <title>Item 1</title> <type>Image</type> <value>path_to_image/image_name.jpg</value> </item> <item> <title>Item 2</title> <type>Text</type> <value>Text Content</value> </item> <item> <title>Item 3</title> <type>Web</type> <value>URL</value> </item> </root>

default

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants