QXml和QDom有什么区别?

Tre*_*ith 3 c++ xml user-interface qt

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

我试图找出使用哪一个,但他们都看起来有类似的功能.

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

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

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

假设的例子:假设您正在进行"一次通过"而非"多次通过"......

ayo*_*yoy 6

简而言之,QXml*类实现了SAX(Simple API for XML)XML解析器,同时QDom*实现了DOM(文档对象模型)XML解析器.

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

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

为什么sax解析比dom解析更快?stax是如何工作的?

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

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