Qt读取XML结构

Posted

技术标签:

【中文标题】Qt读取XML结构【英文标题】:Qt reading XML structure 【发布时间】:2016-04-12 14:36:18 【问题描述】:

我正在使用 Qt5.5,我想将一个 XML 文件读入内存,维护节点和关系的结构和属性。

到目前为止,我一直在使用 QXmlStreamReader,但这并没有起到多大作用,而且我看不到任何明显的方式来建立节点之间的关系。

我最终想要的是将 XML 读入一个链表,其中根节点与根 xml 节点相同,其他节点是它的子节点。

经过一番搜索,我找到了 QDomDocument 和 QDomElement,但是为了使用它们,必须修改 '.pro' 文件,并且应该将 xml 附加到 QT 行。

【问题讨论】:

你考虑过使用QDomDocument吗? 现在就看这个.... QDomElement 和 QDomDocument 在 Qt5.5 中可用吗? 通过谷歌搜索“qt5 qdomdocument”很容易找到... 当然,如果您知道它存在以及使用什么关键字。 我的意思是,回答您的评论问题,如果它们存在于 Qt5 中。 【参考方案1】:

你想要的是一个 DOM 解析器。它提供了 XML 数据的树状模型(文档对象模型),您可以遍历、修改并存储到文件中。

QXmlStreamReader 提供了一个非常简单的接口,类似于 SAX 解析器。如果您只需要从 XML 格式的文本中提取数据,这可能就足够了。 (对于编写简单的 XML,还有一个QXmlStreamWriter)。 这两个类都包含在 Qt Core 模块中

如果您需要更强大的 XML 解析器,Qt XML 模块提供了一个真正的 SAX 解析器 (QXmlSimpleReader) 和一个 DOM 解析器 (QDomDocument)。您可以通过在 pro-file 中添加qt += xml 来激活 qmake 项目。

【讨论】:

以上是关于Qt读取XML结构的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Qt 从磁盘读取 XML 文件?

QT XML阅读器每次读取相同的标签

39.Qt XML

QT 实现 读取 增加 删除 实时操作xml

Qt 5 在 XML 中生成随机属性顺序

QT开发(四十四)——流方法解析XML