QT QDomDocument 读写XML文件

前端之家收集整理的这篇文章主要介绍了QT QDomDocument 读写XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
因为需要读取配置文件,我的配置文件采用xml;因此编写了使用qt读取xml文件内容代码,xml文件
如下:
  1. @H_502_10@<@H_502_10@?xmlversion@H_502_10@="1.0"encoding"UTF-8"?@H_502_10@>
  2. @H_502_10@<configuration@H_502_10@>
  3. @H_502_10@<server@H_502_10@<item key"serverip"value"222.88.1.146"@H_502_10@/"serverport"value"5000"@H_502_10@/server@H_502_10@/configuration@H_502_10@>
为了读取xml,我编写ReadConfig类代码如下:
ReadConfig.h文件内容如下

*@H_502_10@*
  • @H_502_10@*
  • @H_502_10@*文件名@H_502_10@:ReadConfig@H_502_10@.h
  • @H_502_10@*文件摘要@H_502_10@:读取系统配置文件
  • @H_502_10@*作者:程晓鹏
  • @H_502_10@*文件创建时间@H_502_10@:2012@H_502_10@/02@H_502_10@/23 09@H_502_10@:59@H_502_10@:36
  • @H_502_10@/

  • #ifndef READCONFIG_H
  • #define READCONFIG_H

  • #include@H_502_10@<QString@H_502_10@>
  • #include@H_502_10@<QFile@H_502_10@<QDomDocument@H_502_10@>


  • @H_502_10@*读取配置文件
  • @H_502_10@/
  • classReadConfig@H_502_10@{
  • public@H_502_10@:

  • @H_502_10@*构造函数
  • @H_502_10@/
  • ReadConfig@H_502_10@(@H_502_10@)@H_502_10@;

  • @H_502_10@*析构函数
  • @H_502_10@~ReadConfig@H_502_10@*获取配置文件中的值
  • @H_502_10@*@param key 配置的键
  • @H_502_10@*@param type 类型标签
  • @H_502_10@*@return 配置项对应的值
  • @H_502_10@/
  • QString getValueconstQString@H_502_10@&key@H_502_10@,@H_502_10@&type"server"private@H_502_10@:
  • QFile@H_502_10@*localfile@H_502_10@;
  • QDomDocument@H_502_10@*dom@H_502_10@;
  • @H_502_10@}@H_502_10@;

  • #endif
  • ReadConfig.cpp内容如下:
    .cpp
  • @H_502_10@.h的实现文件
  • @H_502_10@/23 10@H_502_10@:07@H_502_10@:05
  • @H_502_10@/

  • #include"ReadConfig.h"

  • ReadConfig@H_502_10@:@H_502_10@)
  • @H_502_10@{
  • QString strfilename@H_502_10@=QString@H_502_10@("p2p.config"@H_502_10@;
  • localfile@H_502_10@=new QFile@H_502_10@(strfilenameif@H_502_10@!localfile@H_502_10@-@H_502_10@>open@H_502_10@(QFile@H_502_10@:ReadOnly@H_502_10@{
  • return@H_502_10@}

  • dom@H_502_10@=new QDomDocument@H_502_10@!dom@H_502_10@>setContent@H_502_10@(localfile@H_502_10@{
  • localfile@H_502_10@>close@H_502_10@;
  • return@H_502_10@}
  • @H_502_10@}

  • ReadConfig@H_502_10@{
  • delete localfile@H_502_10@=0@H_502_10@;
  • delete dom@H_502_10@;
  • dom@H_502_10@}

  • QString ReadConfig@H_502_10@:getValue@H_502_10@{
  • QString result""@H_502_10@;
  • QDomNodeList nodelist@H_502_10@=dom@H_502_10@>elementsByTagName@H_502_10@(type@H_502_10@;@H_502_10@<读取类型节点集合forinti@H_502_10@;i@H_502_10@<nodelist@H_502_10@.count@H_502_10@+@H_502_10@{
  • QDomNode node@H_502_10@=nodelist@H_502_10@.at@H_502_10@(i@H_502_10@;
  • QDomNodeList itemlist@H_502_10@=node@H_502_10@.childNodes@H_502_10@<获取字节点集合intj@H_502_10@;j@H_502_10@<itemlist@H_502_10@{
  • QDomNode mynode@H_502_10@=itemlist@H_502_10@(j@H_502_10@(mynode@H_502_10@.toElement@H_502_10@.attribute"key"@H_502_10@=@H_502_10@=key@H_502_10@{@H_502_10@<查找所需要的键值@H_502_10@/
  • result@H_502_10@=mynode"value"@H_502_10@;
  • break@H_502_10@}

  • return result@H_502_10@}
  • 另外,因为采用Qt的xml模块,记得在你的项目pro文件添加对xml的引用
    QT += xml

    猜你在找的XML相关文章