qt 读取xml文件
2014-09-05 23:21
127 查看
因为需要读取配置文件,我的配置文件采用xml;因此编写了使用qt读取xml文件内容的代码,xml文件
如下:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<server>
<item key="serverip" value="222.88.1.146" />
<item key="serverport" value="5000" />
</server>
</configuration>
为了读取xml,我编写ReadConfig类代码如下:
ReadConfig.h文件内容如下
/******************************************************************************
*
* 文件名: ReadConfig.h
*
* 文件摘要: 读取系统配置文件
*
* 作者:程晓鹏
*
* 文件创建时间: 2012/02/23
09:59:36
*
*******************************************************************************/
#ifndef READCONFIG_H
#define READCONFIG_H
#include <QString>
#include <QFile>
#include <QDomDocument>
/**
* 读取配置文件类
*
*/
class ReadConfig{
public:
/**
* 构造函数
*
*/
ReadConfig();
/**
* 析构函数
*
*/
~ReadConfig();
/**
* 获取配置文件中的值
*
* @param key 配置的键
* @param type 类型标签
*
* @return 配置项对应的值
*/
QString getValue(const QString &key, const QString &type = "server");
private:
QFile *localfile;
QDomDocument *dom;
};
#endif
ReadConfig.cpp内容如下:
/******************************************************************************
*
* 文件名: ReadConfig.cpp
*
* 文件摘要: ReadConfig.h的实现文件<
f627
br />
*
* 作者:程晓鹏
*
* 文件创建时间: 2012/02/23
10:07:05
*
*******************************************************************************/
#include "ReadConfig.h"
ReadConfig::ReadConfig()
{
QString strfilename = QString("p2p.config");
localfile = new QFile(strfilename);
if(!localfile->open(QFile::ReadOnly)){
return;
}
dom = new QDomDocument();
if(!dom->setContent(localfile)){
localfile->close();
return;
}
}
ReadConfig::~ReadConfig()
{
delete localfile;
localfile = 0;
delete dom;
dom = 0;
}
QString ReadConfig::getValue(const QString &key, const QString &type)
{
QString result = "";
QDomNodeList nodelist = dom->elementsByTagName(type); /**< 读取类型节点集合 */
for(int i=0; i<nodelist.count(); i++){
QDomNode node = nodelist.at(i);
QDomNodeList itemlist = node.childNodes(); /**< 获取字节点集合 */
for(int j=0; j<itemlist.count(); j++){
QDomNode mynode = itemlist.at(j);
if(mynode.toElement().attribute("key") == key){ /**< 查找所需要的键值 */
result = mynode.toElement().attribute("value");
break;
}
}
}
return result;
}
另外,因为采用Qt的xml模块,记得在你的项目pro文件中添加对xml的引用
QT += xml
如下:
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<server>
<item key="serverip" value="222.88.1.146" />
<item key="serverport" value="5000" />
</server>
</configuration>
为了读取xml,我编写ReadConfig类代码如下:
ReadConfig.h文件内容如下
/******************************************************************************
*
* 文件名: ReadConfig.h
*
* 文件摘要: 读取系统配置文件
*
* 作者:程晓鹏
*
* 文件创建时间: 2012/02/23
09:59:36
*
*******************************************************************************/
#ifndef READCONFIG_H
#define READCONFIG_H
#include <QString>
#include <QFile>
#include <QDomDocument>
/**
* 读取配置文件类
*
*/
class ReadConfig{
public:
/**
* 构造函数
*
*/
ReadConfig();
/**
* 析构函数
*
*/
~ReadConfig();
/**
* 获取配置文件中的值
*
* @param key 配置的键
* @param type 类型标签
*
* @return 配置项对应的值
*/
QString getValue(const QString &key, const QString &type = "server");
private:
QFile *localfile;
QDomDocument *dom;
};
#endif
ReadConfig.cpp内容如下:
/******************************************************************************
*
* 文件名: ReadConfig.cpp
*
* 文件摘要: ReadConfig.h的实现文件<
f627
br />
*
* 作者:程晓鹏
*
* 文件创建时间: 2012/02/23
10:07:05
*
*******************************************************************************/
#include "ReadConfig.h"
ReadConfig::ReadConfig()
{
QString strfilename = QString("p2p.config");
localfile = new QFile(strfilename);
if(!localfile->open(QFile::ReadOnly)){
return;
}
dom = new QDomDocument();
if(!dom->setContent(localfile)){
localfile->close();
return;
}
}
ReadConfig::~ReadConfig()
{
delete localfile;
localfile = 0;
delete dom;
dom = 0;
}
QString ReadConfig::getValue(const QString &key, const QString &type)
{
QString result = "";
QDomNodeList nodelist = dom->elementsByTagName(type); /**< 读取类型节点集合 */
for(int i=0; i<nodelist.count(); i++){
QDomNode node = nodelist.at(i);
QDomNodeList itemlist = node.childNodes(); /**< 获取字节点集合 */
for(int j=0; j<itemlist.count(); j++){
QDomNode mynode = itemlist.at(j);
if(mynode.toElement().attribute("key") == key){ /**< 查找所需要的键值 */
result = mynode.toElement().attribute("value");
break;
}
}
}
return result;
}
另外,因为采用Qt的xml模块,记得在你的项目pro文件中添加对xml的引用
QT += xml
相关文章推荐
- 使用Qt中的QXmlStreamReader读取XML文件
- 使用Qt中的QXmlStreamReader读取XML文件
- XPath在QT中的使用(QXmlQuery读取XML文件)
- QT读取xml文件,然后写入另外一个新的xml文件
- 使用Qt中的QXmlStreamReader读取XML文件
- qt中xml文件的简单读取
- qt 开发过程中使用DOM方式读取XML文件
- QT DOM方式读取xml文件(QDomElement)
- Qt-QML-C++交互实现文件IO系统-后继-读取XML文件和创建XML文件
- QT读取XML文件
- Qt中QDomDocument,读取txt文件和xml文件,并且修改xml文件和保存修改后的文件
- JS读取XML文件
- 读取Xml文件进行绑定数据
- TinyXML2读取和创建XML文件
- 用dom4j+xpath的方式对xml文件进行读取
- 使用XmlReader读取xml文件
- 在asp.net中读取XML文件
- XML文件总是无法读取其中的数据
- 使用sax读取xml文件生成txt文件。
- Java读取xml文件的四种方法