发现用 Qt 解析 xml 文件非常方便,下面是一个简单的解析 xml 文件的例子:

  1. #include <QtCore/QCoreApplication>
  2. #include <QDomDocument>
  3. #include <QDomElement>
  4. #include <QDomAttr>
  5. #include <QFile>
  6. void parse( const char *filename )
  7. {
  8. if( NULL == filename )
  9. return;
  10. QFile file( filename );
  11. if( !file.open(QFile::ReadOnly | QFile::Text) ) {
  12. printf( "open file '%s' failed, error: %s !\n", filename, file.errorString().toStdString().c_str() );
  13. return;
  14. }
  15. QDomDocument    document;
  16. QString         strError;
  17. int             errLin = 0, errCol = 0;
  18. if( !document.setContent(&file, false, &strError, &errLin, &errCol) ) {
  19. printf( "parse file failed at line %d column %d, error: %s !\n", errLin, errCol, strError );
  20. return;
  21. }
  22. if( document.isNull() ) {
  23. printf( "document is null !\n" );
  24. return;
  25. }
  26. QDomElement root = document.documentElement();
  27. printf( "%s ", root.tagName().toStdString().c_str() );
  28. if( root.hasAttribute("name") )
  29. printf( "%s\n", root.attributeNode("name").value().toStdString().c_str() );
  30. QDomElement files = root.firstChildElement();
  31. if( files.isNull() )
  32. return;
  33. else
  34. printf( "\t%s\n", files.tagName().toStdString().c_str() );
  35. QDomElement element = files.firstChildElement();
  36. while( !element.isNull() ) {
  37. if( element.hasAttribute("name") )
  38. printf( "\t\t file: %s", element.attributeNode("name").value().toStdString().c_str() );
  39. if( element.hasAttribute("size") )
  40. printf( "\t %s", element.attributeNode("size").value().toStdString().c_str() );
  41. printf( "\n" );
  42. element = element.nextSiblingElement();
  43. }
  44. }
  45. int main(int argc, char *argv[])
  46. {
  47. QCoreApplication a(argc, argv);
  48. char filename[256] = { 0 };
  49. printf( "please input file name: " );
  50. gets( filename );
  51. parse( filename );
  52. return a.exec();
  53. }

执行效果:

xml文件:

这个只是 xml 文件解析的例子,xml 文件的生存还没有研究过,以后有时间再说。

Qt解析xml的更多相关文章

  1. Qt解析XML文件(QXmlStreamReader)

    (2013-08-03 10:53:53) 转载▼       如何使用QXmlStreamReader来解析格式良好的XML,Qt的文档中指出,它是一种更快.更方便的Qt自己的SAX解析器(QXml ...

  2. 初识---Qt解析XML文件(QDomDocument)

    关于XML及其使用场景不在此多做介绍,今天主要介绍Qt中对于XML的解析.QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX,两者的区别是什么呢?  DOM(Document Ob ...

  3. Qt中三种解析xml的方式

    在下面的随笔中,我会根据xml的结构,给出Qt中解析这个xml的三种方式的代码.虽然,这个代码时通过调用Qt的函数实现的,但是,很多开源的C++解析xml的库,甚至很多其他语言解析xml的库,都和下面 ...

  4. Qt之xml文件解析

    XML文件简介 XML - EXtensible Markup Language,可拓展标记语言 Qt中加载XML模块 .pro 文件中添加 QT += xml Qt的XML访问方式 引用:https ...

  5. Qt中使用DOM解析XML文件或者字符串(实例)

    因为需要读取配置文件,我的配置文件采用xml:因此编写了使用qt读取xml文件内容的代码,xml文件如下: <?xml version="1.0" encoding=&quo ...

  6. java解析XML文件

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...

  7. OAF_文件系列5_实现OAF解析XML文件javax.xml.parsers(案例)

    20150729 Created By BaoXinjian

  8. Qt之XML(一) DOM

      Qt之XML(一) 文档名称 Qt之XML 创建时间 2012-10-10 修改时间 2012-10-10 创建人 Baifx 简介(收获) 最近开始使用QtXml,学习了一番,写了几个小测试程序 ...

  9. DOM解析xml实现读、写、增、删、改

    qt提供了三种方式解析xml,不过如果想实现对xml文件进行增.删.改等操作,还是DOM方式最方便. 项目配置 pro文件里面添加QT+=xml include <QtXml>,也可以in ...

随机推荐

  1. 11个实用的CSS学习工具

    1. 盒子模型的幻灯片 通过3D转换效果产生的互动的幻灯片.按向左或向右箭头键切换,全屏观看会有更好的效果. 2. CSS Diner 通过一个简单的小游戏让你学习CSS selector,输入正确的 ...

  2. C#.NET常见问题(FAQ)-如何引用定义好的dll文件

    1 添加引用,找到dll文件   2 引用类的名称空间,生成类的实例,调用类的方法,测试OK.     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: http://i.youku.com ...

  3. Android Service完全解析,关于服务你所需知道的一切(上)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952435 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的A ...

  4. [每日一题] OCP1z0-047 :2013-08-24 FLASHBACK—TABLE/PRIMARY KEY(FOREIGN KEY?)......98

    正确答案:D 根据题意如下操作: 一.创建表dept gyj@OCM> CREATE TABLE DEPT 2 (DEPTNO NUMBER(2,0), 3 DNAME VARCHAR2(14) ...

  5. PHP高级教程-文件上传

    PHP 文件上传 通过 PHP,可以把文件上传到服务器. 本章节实例在 test 项目下完成,目录结构为: test |-----upload # 文件上传的目录 |-----form.html # ...

  6. android设备上运行i-jetty服务

    android设备上运行i-jetty服务: 1) i-jetty安装 本人小菜一个,i-jetty源码有好几个文件,不知道怎么运行起来,于是找了一个现成可运行的i-jetty工程(感谢这位同学的分享 ...

  7. 玩转oracle学习第五天

     1.上节回想 2.维护数据的完整性 3.管理索引 4.管理权限和角色 1.掌握维护oracle数据完整性的技巧  2.理解索引的概念,会建立索引  3.管理oracle的权限和角色   介绍:维 ...

  8. adb shell settings 控制安卓系统设置(转)

    Android4.2的源码android-17\com\android\commands目录下较之前的版本多了一个settings命令,查看其中的SettingsCmd.java文件,末尾有命令的帮助 ...

  9. Unity 文字爆炸(风化)消失效果 粒子系统应用

    利用Unity的粒子系统,使用C#代码控制粒子的位置和速度,实现文字风化爆炸的效果. Unity的东西,不像flash,不能直接放到网页中,没办法了,只能放截图了.有兴趣的可以下载看看:text_ex ...

  10. UVa 1303 - Wall

    题目:有非常多点.修一座最短的围墙把素有点围起来,使得全部点到墙的距离不小于l. 分析:计算几何,凸包. 假设.没有距离l的限制.则答案就是凸包的周长了.有了距离限制事实上是添加了2*π*l. 证明: ...