多语言展示
当前在线:804今日阅读:11今日分享:15

qt中如何解析不固定格式的xml文件

在我们的生活中那,如何操作上述标题的小问题,小编今天就在这里给大家分享一点我的小经验,来增加我们的体验,希望可以给你们带来帮助。
方法/步骤
1

QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX。DOM(Document ObjectModel):将XML文件表示成一棵树,便于随机访问其中的节点,但消耗内存相对多一些。SAX(Simple APIfor XML):一种事件驱动的XML API,接近于底层,速度较快,但不便于随机访问任意节点。           使用XML模块,在.pro文件中添加QT += xml,并加如相应的头文件#include 或者#include

2

QDomDocument类代表整个的XML文件。概念上讲:它是文档树的根节点,并提供了文档数据的基本访问方法。由于元素、文本节点、注释、指令执行等等不可能脱离一个文档的上下文,所以文档类也包含了需要用来创建这些对象的工厂方法。被创建的节点对象有一个ownerDocument()函数,它将对象与对象常见的文档上下文环境关联起来。DOM类中最常使用的是QDomNode、QDomDocument、QDomElement和QDomText。

3

解析后的XML文件在内部是通过一个对象树来表示的,对象树可以使用各种QDom类进行访问。所有的QDom类只引用内部树上的对象。一旦最后一个DOM树的QDom对象和QDocument本身被删除掉时,DOM树上的所有内部对象会被删除掉。元素、文本节点等的创建是通过使用类提供的各种工厂方法完成的。使用QDom类的缺省构造函数只会生成空的对象,这些空的对象不能操作,也不能写入到文档中。

4

QDomDocument::setContent()完成XML文档的设置,他从QFile对象中读取XML数据并检测XML文档的编码。setContent()有几种重载形式,可以分别从QByteArray、QString、QIODevice、QXmlInputSource中读取XML数据。(1)domdocument.h

5

常见C/C++ XML解析器有tinyxml、XERCES、squashxml、xmlite、pugxml、libxml等等,这些解析器有些是支持多语言的,有些只是单纯C/C++的。

6

这个解析器在国内似乎少人使用,这个解析器也有些历史了。squashXML基于DOM Level2,也是一个XML轻量级的解析器。天缘之所以把这个写上是天缘比较看重这个解析器的目录划分及使用说明,易懂而且易上手。(4)XMLBooster解析器

注意事项

以上就是小编带给大家的如何操作的关键所在,如果觉得本经验对你们有帮助,请点击正下方的或者是右上角的“大拇指”或分享或“关注TA”给小编我进行一点小小的支持。大家也可以下面发表一下自己的看法。(未经同意,谢绝转载或复制)

推荐信息