TinyXML应用例子
来源:互联网 发布:js 获取日期最后一天 编辑:程序博客网 时间:2024/04/29 10:40
开发软件时经常需要把一些东西做成可配置的,于是就需要用到配置文件,以前多是用ini文件,然后自己写个类来解析。现在有了XML,许多应用软件就喜欢把配置文件做成XML格式。但是如果我们的程序本身很小,为了读取个配置文件却去用Xerces XML之类的库,恐怕会得不偿失。那么用TinyXML吧,它很小,只有六个文件,加到项目中就可以开始我们的配置文件之旅了。
前些时候我恰好就用TinyXML写了一个比较通用的配置文件类,基本可以适应大部分的场合,不过配置文件只支持两层结构,如果需要支持多层嵌套结构,那还需要稍加扩展一下。
从下面的源代码中,你也可以看到怎么去使用TinyXML,也算是它的一个应用例子了。
/*
** FileName: config.h
** Author: hansen
** Date: May 11, 2007
** Comment: 配置文件类,主要用来读取xml配置文件中的一些配置信息
*/
#ifndef _CONFIG
#define _CONFIG
#include <string>
#include "tinyxml.h"
using namespace std;
class CConfig
{
public:
explicit CConfig(const char* xmlFileName)
:mXmlConfigFile(xmlFileName),mRootElem(0)
{
//加载配置文件
mXmlConfigFile.LoadFile();
//得到配置文件的根结点
mRootElem=mXmlConfigFile.RootElement();
}
public:
//得到nodeName结点的值
string GetValue(const string& nodeName);
private:
//禁止默认构造函数被调用
CMmsConfig();
private:
TiXmlDocument mXmlConfigFile;
TiXmlElement* mRootElem;
};
#endif
/*
** FileName: config.cpp
** Author: hansen
** Date: May 11, 2007
** Comment:
*/
#include "config.h"
#include <iostream>
string CConfig::GetValue(const string& nodeName)
{
if(!mRootElem)
{
cout<<"读取根结点出错"<<endl;
return "";
}
TiXmlElement* pElem=mRootElem->FirstChildElement(nodeName.c_str());
if(!pElem)
{
cout<<"读取"<<nodeName<<"结点出错"<<endl;
return "";
}
return pElem->GetText();
}
int main()
{
CConfig xmlConfig("XmlConfig.xml");
//获取Author的值
string author = xmlConfig.GetValue("Author");
cout<<"Author:"<<author<<endl;
//获取Site的值
string site = xmlConfig.GetValue("Site");
cout<<"Site:"<<site<<endl;
//获取Desc的值
string desc = xmlConfig.GetValue("Desc");
cout<<"Desc:"<<desc<<endl;
return 0;
}
假设配置文件是这样的:
<!– XmlConfig.xml –>
<?xml version="1.0" encoding="GB2312" ?>
<Config>
<Author>hansen</Author>
<Site>www.hansencode.cn</Site>
<Desc>这是个测试程序</Desc>
</Config>
怎么使用上面的配置类来读取XmlConfig.xml文件中的配置呢?很简单:
int main()
{
CConfig xmlConfig("XmlConfig.xml");
//获取Author的值
string author = xmlConfig.GetValue("Author");
cout<<"Author:"<<author<<endl;
//获取Site的值
string site = xmlConfig.GetValue("Site");
cout<<"Site:"<<site<<endl;
//获取Desc的值
string desc = xmlConfig.GetValue("Desc");
cout<<"Desc:"<<desc<<endl;
return 0;
}
运行结果如下:
D:\config\Debug>config.exe
Author:hansen
Site:www.hansencode.cn
Desc:这是个测试程序
- TinyXML应用例子
- TinyXML应用例子
- c++之TinyXml使用与应用,包含简单的例子
- TinyXml应用
- tinyxml的使用例子
- tinyXML调用例子
- TinyXML简单应用
- TinyXML应用小结
- TinyXML的简单应用
- TinyXML应用实例
- tinyXML
- tinyxml
- TinyXml
- tinyxml
- TinyXML
- tinyxml
- tinyxml
- TinyXML
- 关于std:auto_ptr std:shared_ptr std:unique_ptr
- JSP引擎的工作原理
- android 项目中出现红色感叹号的解决方法
- Android数据的四种存储方式
- c# activeMQ使用
- TinyXML应用例子
- 信息系统项目管理师案例分析万金油
- listView中按钮等组件的监听
- IOS学习笔记2—Objective C—类、属性、方法
- 3Sum
- ARM处理器的Cache之cortex a8
- SQL事务,只要有一条更新语句受影响行数为0则rollback
- POJ 1151 Atlantis 扫描线+离散化+线段树
- 深度探索C++对象模型笔记(二)