Qt解析xml
发现用 Qt 解析 xml 文件非常方便,下面是一个简单的解析 xml 文件的例子:
- #include <QtCore/QCoreApplication>
- #include <QDomDocument>
- #include <QDomElement>
- #include <QDomAttr>
- #include <QFile>
- void parse( const char *filename )
- {
- if( NULL == filename )
- return;
- QFile file( filename );
- if( !file.open(QFile::ReadOnly | QFile::Text) ) {
- printf( "open file '%s' failed, error: %s !\n", filename, file.errorString().toStdString().c_str() );
- return;
- }
- QDomDocument document;
- QString strError;
- int errLin = 0, errCol = 0;
- if( !document.setContent(&file, false, &strError, &errLin, &errCol) ) {
- printf( "parse file failed at line %d column %d, error: %s !\n", errLin, errCol, strError );
- return;
- }
- if( document.isNull() ) {
- printf( "document is null !\n" );
- return;
- }
- QDomElement root = document.documentElement();
- printf( "%s ", root.tagName().toStdString().c_str() );
- if( root.hasAttribute("name") )
- printf( "%s\n", root.attributeNode("name").value().toStdString().c_str() );
- QDomElement files = root.firstChildElement();
- if( files.isNull() )
- return;
- else
- printf( "\t%s\n", files.tagName().toStdString().c_str() );
- QDomElement element = files.firstChildElement();
- while( !element.isNull() ) {
- if( element.hasAttribute("name") )
- printf( "\t\t file: %s", element.attributeNode("name").value().toStdString().c_str() );
- if( element.hasAttribute("size") )
- printf( "\t %s", element.attributeNode("size").value().toStdString().c_str() );
- printf( "\n" );
- element = element.nextSiblingElement();
- }
- }
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- char filename[256] = { 0 };
- printf( "please input file name: " );
- gets( filename );
- parse( filename );
- return a.exec();
- }
执行效果:

xml文件:

这个只是 xml 文件解析的例子,xml 文件的生存还没有研究过,以后有时间再说。
Qt解析xml的更多相关文章
- Qt解析XML文件(QXmlStreamReader)
(2013-08-03 10:53:53) 转载▼ 如何使用QXmlStreamReader来解析格式良好的XML,Qt的文档中指出,它是一种更快.更方便的Qt自己的SAX解析器(QXml ...
- 初识---Qt解析XML文件(QDomDocument)
关于XML及其使用场景不在此多做介绍,今天主要介绍Qt中对于XML的解析.QtXml模块提供了一个读写XML文件的流,解析方法包含DOM和SAX,两者的区别是什么呢? DOM(Document Ob ...
- Qt中三种解析xml的方式
在下面的随笔中,我会根据xml的结构,给出Qt中解析这个xml的三种方式的代码.虽然,这个代码时通过调用Qt的函数实现的,但是,很多开源的C++解析xml的库,甚至很多其他语言解析xml的库,都和下面 ...
- Qt之xml文件解析
XML文件简介 XML - EXtensible Markup Language,可拓展标记语言 Qt中加载XML模块 .pro 文件中添加 QT += xml Qt的XML访问方式 引用:https ...
- Qt中使用DOM解析XML文件或者字符串(实例)
因为需要读取配置文件,我的配置文件采用xml:因此编写了使用qt读取xml文件内容的代码,xml文件如下: <?xml version="1.0" encoding=&quo ...
- java解析XML文件
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...
- OAF_文件系列5_实现OAF解析XML文件javax.xml.parsers(案例)
20150729 Created By BaoXinjian
- Qt之XML(一) DOM
Qt之XML(一) 文档名称 Qt之XML 创建时间 2012-10-10 修改时间 2012-10-10 创建人 Baifx 简介(收获) 最近开始使用QtXml,学习了一番,写了几个小测试程序 ...
- DOM解析xml实现读、写、增、删、改
qt提供了三种方式解析xml,不过如果想实现对xml文件进行增.删.改等操作,还是DOM方式最方便. 项目配置 pro文件里面添加QT+=xml include <QtXml>,也可以in ...
随机推荐
- Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?
这几天在做Android应用的远程更新功能,将下载的更新包放在移动设备上指定的文件夹. 用的是 Environment.getExternalStorageDirectory() 这种方法.然后在获 ...
- ArcEngine10.x开发的许可问题
1. ArcEngine9.x迁至ArcEngine10.x 相信很多同学都知道,在ArcEngine9.x下正常编译的代码到ArcEngine10.x会报错:ArcGIS version not s ...
- UVA 10700 Camel trading 无括号的表达式 贪心
题意:给出只包含数字和+*的表达式,你可以自己安排每一个运算的顺序,让你找出表达式可能得到的最大值和最小值. 很明显,先乘后加是最小值,先加后乘能得到最大值. 其实不是很明显... 证明下: 数字的范 ...
- 微信小程序 - 实现购物车结算
示例源码下载:小程序-实现购物车结算
- PHP表单-PHP $_POST 变量
PHP $_POST 变量 在 PHP 中,预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值. $_POST 变量 预定义的 $_POST 变量用 ...
- Oracle function实现根据输入的日期以及天数,获取此日期之后的天数的工作日
前提:在法定节日表(t_fdjr )中维护法定节日包括周六周天 /** * 功能描述:根据输入的日期以及天数,获取此日期之后的天数的工作日 * 输入参数: * i_date YYYY-MM-DD * ...
- 栈的应用实例——计算后缀表达式
用户输入一个后缀表达式,程序计算该后缀表达式的值并输出结果: /* postfix_expression.c */ #include "stack.h" #include < ...
- angular中如何监控dom渲染完毕
刚刚看到群上一个人说,他们公司凡是用angular和jquery插件一起用的人,都被解雇了,没看到这句话之前我很惭愧的说我有这样用过,其实angular的生态系统那么完善,完全可以不用去操作任何的do ...
- 【教程】HTML5+JavaScript编写flappy bird
作者: 风小锐 新浪微博ID:永远de风小锐 QQ:547953539 转载请注明出处 PS:新修复了两个bug,已下载代码的同学请查看一下 大学立即要毕业了. ...
- Windows安装MySQL解压版
1:解压 2:设置环境变量 3:修改my.ini [mysqld] basedir = D:\MySQL\Server\mysql--win32 datadir = D:\MySQL\Server\d ...