QXml和QDom有什么区别?

时间:2011-10-20 19:38:59

标签: c++ xml qt user-interface

在Qt中,有许多不同的方法可以使用XML。为了保持这个简单,我只想查看QXml *类和QDom *类。

我正在试图找出使用哪一个,但它们都看起来具有相似的功能。

QXml和QDom之间的主要区别是什么?

假设示例:是否有人将整个xml文件读入内存,使其在启动时变慢但在启动后更快?

哪些方案应该要求您使用一种方法而不是另一种方法?你为什么要用另一个呢?

假设的例子:假设你在做“一次通过”而不是“多次通过”......

1 个答案:

答案 0 :(得分:6)

简而言之,QXml*类实现了SAX(XML的简单API)XML解析器,而QDom*实现了DOM(文档对象模型)XML解析器。

主要区别在于SAX是一个顺序访问解析器,因此它在读取文档时对其进行解析,并使得第一块解析数据几乎立即可用。 DOM需要将整个文档加载到内存中以进行解析,但在代码开销方面可能更容易处理(对于SAX,您必须实现XML处理程序类)。一般来说,SAX更轻巧,更快。

有很多关于SAX和DOM比较的在线阅读:

why is sax parsing faster than dom parsing ? and how does stax work?

http://developerlife.com/tutorials/?p=28

here是一个比较各种多平台XML解析器(包括QXml*QDom*)的好文档。您最好的选择取决于您的用例,如果您使用的是大型XML文档,则您更喜欢SAX。对于微小的XML,你最好使用DOM,因为从文件中获取所需数据只需几行代码。