Имеется метод
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"?>, то все работает.
Что не так?