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