Documentation confusion QXmlStreamReader::readNextStartElement
-
Hi,
I am using "QXmlStreamReader::readNextStartElement" to parse an exm stream. The data is read from a network socket, I am using the following method.
@mysocket mysock;
QXmlStreamReader xmlreader;
char buff[1024];
int outlen=0;
int err;
while(mysock.ReadData(buff,1024,outlen)&&outlen!=0)
{
QByteArray byteArray(buff,outlen);
xmlreader.addData(byteArray);
while(1)
{
if(!xmlreader.readNextStartElement())
{
err=xmlreader.error();
switch(err)
{
case QXmlStreamReader::NoError:
break;
case QXmlStreamReader::PrematureEndOfDocumentError:
//some code to break the infinite while loop
break;
}
}}
}
@In the code at line 8 & 9, if the "bytearray" is not fully parsed, whether the existing unparsed data will be lost? If so is there any alternative?
And "readNextStartElement()" some times returns false, but when I check the error status using "error()" call, it returns "NoError"! Why this is happening?
Thanks,
Lloyd -
Hello.
I don't understand why any data should be partially parsed in line 8 or 9. Neither of these lines does any parsing as far as I can tell.
The documentation of QXmlStreamReader::readNextStartElement states:
bq. Returns true when a start element was reached. When the end element was reached, or when an error occurred, false is returned.
So I guess when you see a false return value and now Error you just read the end element.