文档章节

TinyXML应用例子

rise-worlds
 rise-worlds
发布于 2016/06/20 13:35
字数 582
阅读 1
收藏 0

开发软件时经常需要把一些东西做成可配置的,于是就需要用到配置文件,以前多是用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:这是个测试程序

 

本文转载自:http://www.cnblogs.com/flying_bat/archive/2007/11/10/955326.html

rise-worlds

rise-worlds

粉丝 3
博文 1755
码字总数 0
作品 0
深圳
程序员
私信 提问
TinyXML:一个优秀的C++ XML解析器

读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解...

zmldndx
2013/10/10
1K
0
C++ 使用TinyXML解析XML文件

读取和设置xml配置文件是最常用的操作,TinyXML是一个开源的解析XML的C++解析库,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便...

LoSingSang
2018/07/17
114
0
大牛们帮忙看看 cmake命令报错 错误如下

CMake Error at C:/Program Files/CMake/share/cmake-3.0/Modules/FindPackageHandleS tandardArgs.cmake:136 (message): Could NOT find TinyXML (missing: TINYXML_LIBRARY TINYXML_INCLUD......

炸猪翅1
2014/06/21
1K
1
C++ XML 解析器:tinyxml

[tinyxml2]: http://www.grinninglizard.com/tinyxml2/index.html C++ XML 解析器:[tinyxml][tinyxml2] 1) [TinyXML-2][tinyxml2] 一个简单,轻量,高效的C++ XML 解析器,能够很容易得整合......

加壹
2014/04/24
2.2K
0
TinyXml 读写XML文件

使用Tinyxml创建和读取XML文件的优点:1,可在Windows和Linux中使用;2,方便易学,易用,可在http://sourceforge.net/projects/tinyxml/获取源代码。将其中的文件tinystr.h,tinyxml.h,tin...

鉴客
2011/12/10
3.6K
3

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (21. JAVA 算法)

21. JAVA 算法

Shingfi
29分钟前
4
0
redis 命令

redis 秒杀用到的 原子锁 :$redis->decr('jili_reward_goods_stock_' . $gifts_id) redis 秒杀用到的原子锁在秒杀过程中库存量增加 $redis->incrBy('key1', 10); redis 键查看重复:$redis-......

小小小壮
29分钟前
4
0
像智能手机一样管理云端应用:阿里云联合微软全球首发开放应用模型(OAM)

2019 年 10 月 17 日上午 9 点 15 分,阿里巴巴合伙人、阿里云智能基础产品事业部总经理蒋江伟在 QCon 上海《基于云架构的研发模式演进》主题演讲中,正式宣布: “今天,我们同微软联合发布...

阿里巴巴云原生
38分钟前
4
0
SpringBoot配置数据源

默认数据源 Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是: org.apache.tomcat.jdbc.pool.DataSource......

Gx_ww
41分钟前
4
0
Java应用在docker环境配置容器健康检查

在《极速体验docker容器健康》一文已体验了docker容器健康检查功能,今天就来给java应用的容器加入健康检查,使应用的状态随时都可以被监控和查看。 实战环境信息 操作系统:macOS Catalina ...

程序员欣宸
43分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部