QXml 和 QDom 有什么区别?

发布于 2024-12-11 02:55:49 字数 304 浏览 1 评论 0原文

在 Qt 中,有多种不同的方法来使用 XML。为了简单起见,我只想查看 QXml* 类和 QDom* 类。

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

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

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

什么场景应该要求您使用一种方法而不是另一种方法?为什么你应该使用其中一个而不是另一个?

假设的例子:假设你正在做“一次通过”与“多次通过”......

In Qt there are a number of different ways to work with XML. To keep this simple I only want to look at the QXml* classes and the QDom* classes.

I'm trying to figure out which one to use but they both look to have similar functionality.

What's are the main differences between QXml and QDom?

Hypothetical example: Does one read the whole xml file into memory making it slow at startup but faster after startup?

What scenarios should require you to you to use one method over the other? and why should you use one over the other?

Hypothetical example: let's say you you are doing a "one-pass" versus "multi-pass"...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

玩套路吗 2024-12-18 02:55:49

简而言之,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,因为只需几行代码即可从文件中获取所需的数据。

In short, QXml* classes implement SAX (Simple API for XML) XML parser while QDom* implement DOM (Document Object Model) XML parser.

The main difference is that SAX is a sequential access parser, so it parses the document as it reads it, and makes first chunks of parsed data available almost instantly. DOM needs to load the whole document into the memory to get it parsed, but it might be a bit easier to handle in terms of code overhead (for SAX you have to implement XML handler class). In general, SAX is more lightweight and faster.

There's lots of reading online regarding comparison of SAX and DOM:

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

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

And here's a nice document comparing various multiplatform XML parsers (including QXml* and QDom*). Your best choice depends on your use case, if you're working with huge XML documents, you'd prefer SAX. For tiny XMLs you'd be better off using DOM, since it's just a few lines of code to get data you need from a file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文