qt下使用QXmlStreamReader读取xml/html信息
1、bool QXmlStreamReader::atEnd() const
判断xml数据是否结束
2、TokenType QXmlStreamReader::readNext()
读取下一个标识,返回类型TokenType表示该标识的类型
对于示例:<tag>tagTxt</tag>
第一个标识为<tag>,其标识类型为QXmlStreamReader::StartElement
第二个标识为tagTxt,其标识类型为QXmlStreamReader::Characters
第三个标识为</tag>,其标识类型为QXmlStreamReader::EndElement
本文还用到了QXmlStreamReader::StartDocument、QXmlStreamReader::EndDocument、QXmlStreamReader::Characters
3、QStringRef QXmlStreamReader::name() const
返回标签的名字,<tag>和</tag>返回的名字都是tag
4、TokenType QXmlStreamReader::tokenType() const
返回当前标签的类型
5、QStringRef QXmlStreamReader::text() const
对于示例:<tag>tagTxt</tag>可以获取tagTxt信息
6、QString QXmlStreamReader::errorString() const
出错时用来获取错误信息
1、有一个xml格式的字符串,该字符串定义了打印信息的行数、每行的字体(大、中、小)、样式(居左、居中、居右)。<br/>表示换行,紧接着的<br/>表示空行
<xmlInfo>
<center>
<L>large txt</L>
</center>
<br/>
<br/>
<left>
<S>small txt</S>
</left>
<br/>
<right>
<M>middle txt</M>
</right>
<br/>
</xmlInfo>
2、解析打印xml字符串,并保存到打印结构体中
1、原理:
(1)找到xmlInfo开始元素
(2)依次读取每一条打印信息,<center>...</center>包含的就是一条打印信息,<br/>也是一条打印信息
【2.1】读取开始元素、结束元素,确保它们成对出现
【2.2】根据标签名设置打印信息
【2.3】判断标签名是否出现在指定的层级上,确保xml格式正确
【2.4】最后一层读取打印字符信息
(3)添加打印信息到打印信息列表中
【3.1】如果是普通打印信息,直接添加
【3.2】如果是空行,第一个空行为换行符,后续的空行需要增加打印一个空字符
2、字体和样式枚举定义

3、定义单行打印信息结构体

4、设置层级信息信息全局变量,并赋值

5、读取xml字符串

6、根据标签名,设置打印字符、样式函数

7、递归获取每一行打印信息函数


8、读取xmlInfo节点,然后顺序获取每一行打印信息
根据打印信息是否为<br>,进行不同的处理


9、运行结果
