在Qt中,有许多不同的方法可以使用XML。为了保持这个简单,我只想查看QXml *类和QDom *类。
我正在试图找出使用哪一个,但它们都看起来具有相似的功能。
QXml和QDom之间的主要区别是什么?
假设示例:是否有人将整个xml文件读入内存,使其在启动时变慢但在启动后更快?
哪些方案应该要求您使用一种方法而不是另一种方法?你为什么要用另一个呢?
假设的例子:假设你在做“一次通过”而不是“多次通过”......
答案 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,因为从文件中获取所需数据只需几行代码。