QXmlStreamReader:一种快速的基于流的方式访问良格式 XML 文档,特别适合于实现一次解析器(所谓“一次解析器”,可以理解成我们只需读取文档一次,然后像一个遍历器从头到尾一次性处理 XML 文档,期间不会有反复的情况,也就是不会读完第一个标签,然后读第二个,读完第二个又返回去读第一个,这是不允许的);
DOM(Document Object Model):将整个 XML 文档读入内存,构建成一个树结构,允许程序在树结构上向前向后移动导航,这是与另外两种方式最大的区别,也就是允许实现多次解析器(对应于前面所说的一次解析器)。DOM 方式带来的问题是需要一次性将整个 XML 文档读入内存,因此会占用很大内存;
SAX(Simple API for XML):提供大量虚函数,以事件的形式处理 XML 文档。这种解析办法主要是由于历史原因提出的,为了解决 DOM 的内存占用提出的(在现代计算机上,这个一般已经不是问题了)。

XML文件如下:

<?xml version='1.0' encoding='UTF-8'?>
<china><beijing><haidian><university><peking><cs><name>奥巴马</name></cs></peking></university></haidian></beijing>
</china>

Qt解析代码如下:

    QDomDocument doc;QDomElement root;QString filename = "D:\\Qt Projects\\TestXML_1\\demo.xml";QFile file(filename);if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){QMessageBox::critical(this, "文件打开失败", QString("不能打开文件:%1").arg(filename));return;}QString error;int errrow, errcol;if(!doc.setContent(&file, false, &error, &errrow, &errcol)){QMessageBox::critical(this, "文件解析失败",QString("解析错误行:%1, 列:%2:%3").arg(errrow).arg(errcol).arg(error));file.close();return;}root = doc.documentElement();file.close();QString path = "china/beijing/haidian/university/peking/cs/name";QStringList strlist = path.split("/");QDomElement element = root;for(int i=1; i<strlist.count(); i++){element = element.firstChildElement(strlist.at(i));}qDebug() << element.nodeName() << "\t" << element.text();

运行结果:

22:58:14: Starting D:\Qt Projects\build-TestXML_1-Desktop_Qt_6_0_3_MinGW_64_bit-Debug\debug\TestXML_1.exe ...
"name"     "奥巴马"
22:58:17: D:\Qt Projects\build-TestXML_1-Desktop_Qt_6_0_3_MinGW_64_bit-Debug\debug\TestXML_1.exe exited with code 0

Qt DOM读写XML文件相关推荐

  1. java dom读写xml文件_java通过dom读写xml文件

    java通过dom读写xml文件 要读的xml文件 encoding="GB2312"?> "男"> 李华姓名> 14年龄> 学生> ...

  2. [QT操作XML]QT读写XML文件,QT修改XML文件

    [QT操作XML]QT读写XML文件 XML简介 QT操作XML,写入.读取.修改 XML效果演示 XML简介 概念:Extensible Markup Language 可扩展标记语言(可扩展:标签 ...

  3. 使用MSXML读写XML文件

    使用MSXML读写XML文件 源代码: #include <iostream> #include <string> #include <cassert> #incl ...

  4. dom4j读写xml文件

    dom4j读写xml文件 首先我们给出一段示例程序: import java.io.File; import java.io.FileWriter; import java.util.Iterator ...

  5. java dom xml 换行,dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件...

    网友求助:dom4j解析xml文件_用DOM解析XML文件,怎么才能让解析出来的文本不用换行_dom解析xml文件 问题importjava.text.SimpleDateFormat; import ...

  6. [转]C#读写xml文件

    c#读写xml文件 已知有一个XML文件(bookstore.xml)如下: <?xml version="1.0" encoding="gb2312"? ...

  7. (3)[wp7数据存储] WP7 IsolatedStorage系列篇——通过XmlSerializer读写XML文件 [复制链接]...

    发表于 2012-5-17 15:51:07 |只看该作者 |倒序浏览 分享到: 本帖最后由 agameboy 于 2012-5-17 17:08 编辑 这一篇我们会通过XmlSerializer读写 ...

  8. xml文件c语言读取函数,读写xml文件的2个小函数

    #region 读写xml文件的2个小函数,2005 4 2 by hyc public void SetXmlFileValue(string xmlPath,string AppKey,strin ...

  9. 使用DOM生成XML文件(转)

    http://www.51cto.com/art/200704/46743.htm   6.11  使用DOM生成XML文件 解析器通过在内存中建立和XML结构相对应的树状结构数据,使得应用程序可以方 ...

最新文章

  1. Java方法详细介绍
  2. [转]Windows与VC命名规则
  3. c语言博客作业02--循环结构
  4. 数字化时代,TO B业务如何进阶?
  5. 1476D. Journey
  6. c/c++教程 - 2.4.2.7~8 类对象作为类成员,static静态成员变量函数
  7. deepin linux查看ip,deepin使用iproute配置网络命令
  8. 人的声音是可以通过训练而改变的吗?
  9. 《Microsoft Word》进阶技巧:如何设置文档视图
  10. 说说 Jaspersoft Studio 的主界面和报表设计视图
  11. 【转载】SQL注入进阶
  12. 1082 Read Number in Chinese
  13. 掌握这些电脑知识,你会玩得很无耻
  14. 动态规划DP模板题汇总
  15. 石油大学远程北京c语言在线作业,中石油北京2020秋《C语言程序设计》第三次在线作业百分...
  16. 项目经理通过甘特图编制项目计划的方法
  17. 什么是版权,怎么申请
  18. 【知识图谱系列】基于互信息最大化的图谱预训练模型DGI InfoGraph
  19. 懒人精灵(一款类似按键精灵的工具)如何制作和导出lua加密插件
  20. [黑苹果系列] M910x完美黑苹果系统安装教程 - 3 m910x的BIOS设置-BIOS Setting

热门文章

  1. POJ 1661 Help Jimmy DP
  2. 英语语法最终珍藏版笔记-3几个常用时态的比较
  3. 33个非常有创意的404错误页面设计
  4. 用WSE在Web服务中验证用户身份
  5. [转] 《完美程式设计指南》Effective Delphi
  6. 看完就懂系列—动态规划
  7. 随机森林算法4种实现方法对比测试:DolphinDB速度最快,XGBoost表现最差
  8. java的面向对象的四大特征
  9. 1.3 Quick Start中 Step 3: Create a topic官网剖析(博主推荐)
  10. 《Total Commander:万能文件管理器》——第8.3节.张学思版预装的插件