项目要用到QT解析xml文件来读取各个设备的相关信息
现在解析100个设备,存在一个大概650K的xml文件中,需要耗时12~13秒时间
老大的意思,解析这么大一个文件应控制到3秒之内
我用的QXmlStreamReader类做的解析
参考的是qt4 demo中的例子
用while循环从头到尾遍历一遍xml文件
请问有用QT做过xml文件解析的XD,我这样的解析速度正常吗?
如果慢了,有什么其他的方法可以改善解析的效率吗?
------解决方案--------------------
XML的解析主要有两大模型:SAX和DOM。其中SAX是基于事件的,其基本工作流程是分析XML文档,当发现了一个新的元素时,产生一个对应事件,并调用相应的用户处理函数。这种方式占用内存少,速度快,但用户程序相应得会比较复杂。
而DOM(文档对象模型),则是在分析时,一次性的将整个XML文档进行分析,并在内存中形成对应的树结构,同时,向用户提供一系列的接口来访问和编辑该树结构。这种方式占用内存大,速度往往慢于SAX,但可以给用户提供一个面向对象的访问接口,对用户更为友好。
请参考SAX Bookmars该例。