PDA

View Full Version : Mysterious QXMLStreamReader parsing behavior


ym1206
1st May 2008, 10:41
Hi,all,

I am new to Qt xml classes.
When reading XmlStreamReader example from the book by Jasmin Blanchette, I encountered mysterious QXMLStreamReader parsing behavior.
The small xml file from the book is listed as following:

<?xml version="1.0"?>
<bookindex>
<entry term="sidebearings">
<page>10</page>
<page>34-35</page>
<page>307-308</page>
</entry>
<entry term="subtraction">
<entry term="of pictures">
<page>115</page>
<page>244</page>
</entry>
<entry term="of vectors">
<page>9</page>
</entry>
</entry>
</bookindex>
My question is: Why do so many "Characters" Tokens emerge during the parsing procedure?
As an example, for line "<page>307-308</page>", after readElementText(),Token is "EndElement", with another readNext(), "</entry>" should be read, and the token is supposed to be "EndElement", but "Characters" token appeared, Why?

Thanks for your help.


All the tokens reported by the parser are listed below:
StartDocument
StartElement
Characters
StartElement
Characters
StartElement
EndElement
Characters
StartElement
EndElement
Characters
StartElement
EndElement
Characters
EndElement
Characters
StartElement
Characters
StartElement
Characters
StartElement
EndElement
Characters
StartElement
EndElement
Characters
EndElement
Characters
StartElement
Characters
StartElement
EndElement
Characters
EndElement
Characters
EndElement
Characters
EndElement
EndDocument

kunalnandi
1st May 2008, 11:53
Hello Friend,

I can't say exactly, but it might be a whitespace, i think the parser consider whitespace as "Characters".
so just check for whitespace before you read next element...

try this to check whitespace..!!


QXmlStreamReader *reader = new QXmlStreamReader();
if( reader->isWhitespace() == true )
{
reader->readNext();
}

ym1206
1st May 2008, 12:38
Thanks for your help.

I'll try to understand the example code with WhiteSpace and NewLine in mind.:D