ПУСТО

вторник, 14 июля 2015 г.

Qt QXmlQuery

Скопировано отсюда http://pavelk.ru/qt-qxmlquery

Небольшой примерчик как работать с QXmlQuery
Пример xml файла для парсинга:

<?xml version="1.0" encoding="utf-8"?>
<root>
<lot gid="10">
    <id>141</id>
    <description>Наши контакты</description>
    <images>
        <img />LOTS/contakt.png
    </images>
</lot>
.....
</root>

Парсинг файла
Добавим в файл проекта (*.pro)

QT += xmlpatterns

#include <qtxml>
#include <qxmlquery>
#include <qtxmlpatterns>
#include <qtdebug>
 
QFile file("data.xml");
if (!file.open(QIODevice::ReadOnly)) {
   qDebug()&lt;&lt;"file not opened!";< return;
}

QXmlQuery xmlQuery;
xmlQuery.bindVariable("myDocument", &file);

xmlQuery.setQuery("doc($myDocument)/root/lot[2]/description/string()"); //-- если не указать /string() то вернётся xml с тэгами

if(!xmlQuery.isValid()) {
   qDebug()<<"xml not valid";
   return ;
}

//-- выводим результат
QString res;
xmlQuery.evaluateTo(&res); //-- приводим результат к строке

qDebug()<<"RES:"<<res;
 
 Для парсинга из строки
 
 QByteArray byteArray = "<?xml version="1.0" encoding="utf-8"?><root><lot gid="10"><description>Наши контакты</description></lot></root>";
QBuffer buffer( &byteArray );
buffer.open( QIODevice::ReadOnly );
xmlQuery.bindVariable("myDocument", &buffer);

Комментариев нет:

Отправить комментарий