Russian Qt Forum
Ноябрь 23, 2024, 02:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: xPath к xml в QString  (Прочитано 5417 раз)
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"?>, то все работает.

Что не так?
« Последнее редактирование: Ноябрь 13, 2012, 12:50 от akaMDA » Записан
akaMDA
Гость
« Ответ #1 : Ноябрь 14, 2012, 10:40 »

Что за хрень? Работает с UTF-8 оказывается. С UTF-16 не работает...
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Ноябрь 14, 2012, 16:31 »

Что за хрень? Работает с UTF-8 оказывается. С UTF-16 не работает...

Так кодировка твоего XML UTF-8, а не UTF-16. Предположу, что поэтому парсер спотыкается.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.164 секунд. Запросов: 23.