Seite 1 von 1

[gelöst] QByteArray und UTF-16

Verfasst: 15. November 2007 09:15
von Nemesis
Hallo,
ich habe ein Problem beim Parsen einer UTF16-Xml-Datei.
Der ursprüngliche Code war folgender:

Code: Alles auswählen

 bool XmlManager::myParseXmlFunc(QString aFilename)
{
   QFile aFile(aFilename);
   QString aErrorMessage;
    int aLine, aColumn;
   if(!myDomDocument.setContent(&aFile, &aErrorMessage, &aLine, &aColumn)
{
Damit hat alles gut geklappt. Jetzt möchte ich aber nicht mehr aus dem File lesen. Jetzt bekommt die Funktion ein QByteArray übergeben:

Code: Alles auswählen

 bool XmlManager::myParseXmlFunc(QByteArray aMessageBuffer)
{
      QString aErrorMessage;
    int aLine, aColumn;
   if(!myDomDocument.setContent(aMessageBuffer, &aErrorMessage, &aLine, &aColumn)
{
Das funktioniert nicht mehr, jetzt bekomme ich eine Meldung, dass es ein Problem beim Parsen vom ersten Zeichen gibt.
Ich nehme mal an, dass es daran liegt, dass der Inhalt von dem QByteArray in UTF-16 ist, aber das nicht -wie bei dem QFile- automatisch erkannt wird.
Kann mir da vielleicht jemand weiterhelfen?

Verfasst: 15. November 2007 12:21
von Christian81
Siehe http://doc.trolltech.com/4.3/qdomdocume ... setContent
It tries to detect the encoding of the document as required by the XML specification.
d.h. das ist bei Dir falsch. Übergib einen QString und fertig.


Außerdem übergibt man besser const QString &string und const QByteArray &array anstatt lokale Kopien erzeugen zu lassen.

Verfasst: 15. November 2007 12:39
von Nemesis
Hab aber auch gerade festgestellt, dass in dem ByteArray, welches ich übergeben habe, Fehler drin waren :oops:
Jetzt funktioniert es so.
Aber trotzdem vielen Dank für die Tipps. Werde das mit dem Referenzen auch gleich mal ändern :)