Russian Qt Forum

Qt => XML => Тема начата: akaMDA от Ноябрь 13, 2012, 12:32



Название: xPath к xml в QString
Отправлено: akaMDA от Ноябрь 13, 2012, 12:32
Имеется метод
Код:
bool messageProtocol::isConnectionMessage(QString *_mess)
{
    QByteArray ba;
    ba.append(*_mess);

    QBuffer buffer(&ba);
    if(!buffer.open(QFile::ReadOnly | QFile::Text))
    {
        return false;
    }

    QXmlQuery xmlQuery;

    xmlQuery.bindVariable("message", &buffer);

    xmlQuery.setQuery("doc($message)/message");

    if(!xmlQuery.isValid())
    {
        return false;
    }

    QXmlResultItems items;
    xmlQuery.evaluateTo(&items);

    return true;
}

В _mess лежит
Код:
<?xml version="1.0" encoding="UTF-16"?>
<message>
 <type value="CONNECT"/>
 <action value="CONNECT"/>
 <data>
  <PID value="1720"/>
  <host value="TEST-MIRROR13"/>
 </data>
</message>

При выполнении xmlQuery.evaluateTo(&items); происходит ошибка
Код:
Error FODC0002 in tag:trolltech.com,2007:QtXmlPatterns:QIODeviceVariable:message, at line 1, column 40: Start tag expected.

Если убрать шапку <?xml version="1.0" encoding="UTF-16"?>, то все работает.

Что не так?


Название: Re: xPath к xml в QString
Отправлено: akaMDA от Ноябрь 14, 2012, 10:40
Что за хрень? Работает с UTF-8 оказывается. С UTF-16 не работает...


Название: Re: xPath к xml в QString
Отправлено: Alex Custov от Ноябрь 14, 2012, 16:31
Что за хрень? Работает с UTF-8 оказывается. С UTF-16 не работает...

Так кодировка твоего XML UTF-8, а не UTF-16. Предположу, что поэтому парсер спотыкается.