Russian Qt Forum

Qt => Qt Quick => Тема начата: Pingvin от Марта 26, 2014, 12:17



Название: XmlListModel в QML
Отправлено: Pingvin от Марта 26, 2014, 12:17
Добрый день !)  У меня возникла такая проблема :
есть xml файл ,такого вида :(тут часть xml)
Код
XML
<image size="small">34/274359.jpg</image>
<image size="medium"> 64/274359.jpg</image>
<image size="large">274359.jpg</image>
<image size="extralarge">252/274359.jpg</image>
<image size="mega">
Mon.jpg
</image>
 
Так вот мне нужно парсить только тэг image у которого size=large.
Долго уже мучаюсь не знаю как сделать  :-\
За любую информацию буду безумно благодарен:)


Название: Re: XmlListModel в QML
Отправлено: OKTA от Марта 26, 2014, 12:47
http://stackoverflow.com/questions/19281773/reading-multiple-xml-attributes-with-qml
Это вроде должно помочь. Просто так тэг не прочитать.


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 26, 2014, 13:18
они там получают свойство ,а мне нужно значение внутри тэга(


Название: Re: XmlListModel в QML
Отправлено: OKTA от Марта 26, 2014, 13:53
Там как раз человек пытался получить значения countdown внутри тэга <departureTime delay="" countdown="3"/>


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 26, 2014, 16:29
а мб будет проще через json? (есть такая возможность )


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 26, 2014, 16:31
а в том коде,что по ссылке я ничего не понял если честно


Название: Re: XmlListModel в QML
Отправлено: kibsoft от Марта 27, 2014, 10:43
Код:
XmlListModel {
     id: xmlModel
     source: "ФАЙЛ"
     query: "/image"
     XmlRole { name: "size"; query: "@size/string()" }
     XmlRole { name: "image"; query: "image/string()" }
}

Как-то так


Название: Re: XmlListModel в QML
Отправлено: OKTA от Марта 27, 2014, 10:46
 :o работает! огонь!!
Спасибо!  ;)


Название: Re: XmlListModel в QML
Отправлено: kibsoft от Марта 27, 2014, 10:47
Не за что :)


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 27, 2014, 11:57
Да,спасибо огромное,но size выводит ,a c image какие то проблемы:(


Название: Re: XmlListModel в QML
Отправлено: OKTA от Марта 27, 2014, 12:09
Вот так работает
Код:
import QtQuick 1.0

Rectangle {
    width: 200
    height: 200

    XmlListModel {
      id: itemmodel
      xml: "<list><item id=\"1\">This i want</item><item id=\"2\">This i want2</item></list>"
      query: "/list/item"
      XmlRole {
          name: "itemNum"
          query: "@id/string()"
      }
      XmlRole {
          name: "itemContant"
          query: "string()"
      }
    }
    ListView {
       width: 180; height: 300
       model: itemmodel
       delegate: Rectangle {
         height: 40
         width: 100

         Text {
             text: "Item Id:" + itemNum + "; Item Data:" + itemContant
         }
       }
     }
}


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 27, 2014, 12:34
все равно ,что то не то((
Код
C++ (Qt)
Rectangle {
   width: parent.width
   height: parent.height
 
   XmlListModel {
     id: itemmodel
     source: "http://ws.audioscrobbler.com/2.0/?method=geo.gettopartists&country=spain&api_key=fef91516474dea0dca023e9281fb5c11"
     query: "/lfm/topartists/artist"
 
     XmlRole {
         name: "title"
         query: "name/string()"
     }
     XmlRole {
         name: "image"
         query: "image/string()"
     }
   }
   ListView {
      width: parent.width; height: parent.height
      model: itemmodel
      delegate: Item {
          id: delegate
          height: column.height + 40
          width: delegate.ListView.view.width
 
 
          Column {
              id: column
              x: 20; y: 20
              width: parent.width - 40
 
              Text {
                  id: titleText
                  text: title; width: parent.width; wrapMode: Text.WordWrap
                  font { bold: true; family: "Helvetica"; pointSize: 16 }
              }
              Image {
                  id: img
                  source: title1
                  height: 100
                  width: 100
 
              }
 
              Text {
                  id: descriptionText
                  width: parent.width; text: image
                wrapMode: Text.WordWrap; font.family: "Helvetica"
              }
          }
 
          Rectangle {
              width: parent.width; height: 1; color: "#cccccc"
              anchors.bottom: parent.bottom
          }
      }
    }
}


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 27, 2014, 12:34
заголовки выводит ,а ссылки на изображения нет :-\


Название: Re: XmlListModel в QML
Отправлено: kibsoft от Марта 27, 2014, 14:29
Проблема в том, что у вас несколько элементов image у artist. Я полагаю, что нужно создать отдельную роль на каждый image в зависимости от размера:
Код:
XmlRole {
   name: "small_image"
   query: "строка_запроса"
}

В query вы должны поместить правильный XPath запрос, например, использовать функцию contains() или что-то в этом роде. Т.е. вы должны однозначно определить элемент <image size="small"> и остальные.


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 27, 2014, 14:31
но тогда только один ,потому что мне нужно получать только <image size="large">


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 27, 2014, 14:42
огромное спасибо!!))))Все получилось!)))))


Название: Re: XmlListModel в QML
Отправлено: kibsoft от Марта 27, 2014, 14:58
Решение покажете? Остальным..да и мне тоже интересно.


Название: Re: XmlListModel в QML
Отправлено: Pingvin от Марта 27, 2014, 16:09
Вот как то так:
Код
C++ (Qt)
Rectangle {
   width: parent.width
   height: parent.height
  color : "transparent"
  Keys.onPressed: {
      if (event.key==Qt.Key_Escape) {
         music_menu.focus=true;
        topartist_menu.focus=false;
      }
 
  }
   XmlListModel {
     id: itemmodel
     source: "http://ws.audioscrobbler.com/2.0/?method=geo.gettopartists&country=spain&api_key=fef91516474dea0dca023e9281fb5c11"
     query: "/lfm/topartists/artist"
 
     XmlRole {
         name: "title"
         query: "name/string()"
     }
     XmlRole {
         name: "image"
         query: "image[4]/string()"
     }
   }
 
 
   ListView {
       id: gridView
       height:  200
      width:200  
       model: itemmodel
      delegate:TopArtist{}
 
}
}