`
20386053
  • 浏览: 432155 次
文章分类
社区版块
存档分类
最新评论

我的服务端之添加xml解释器

 
阅读更多
在游戏服务端中,我们会将可变的东西写数据库里,而将一成不变的东西写在配置里。在现实开发过程中,大多数开发者会选用xml作为服务的配置。原因是xml树形结构化表示、标记清晰及易于理解和方便移植。下面我将会为我的服务端添加tinyxml。

tinyxml是一个简单的,轻量级的,由C++实现的XML文档的解析器,它可以被其它程序方便地集成进去使用。同时tinyxml也是免费开源的。因此我会将tinyxml集成到我的服务端里面。tinyxml只有以下几个源文件。


tinyxml的源文件可以到网上下载,下面来看一下tinyxml的应用例子。

<?xml version="1.0" encoding="utf-8"?>
<blog name="一头汗的专栏">  
	<blogger>一头汗</blogger>
	<classify name="我的服务端">
		<article>我的服务端之C++游戏服务端防崩溃</article>
		<article>我的服务端之C++封装Mysql</article>
		<article>我的服务端之C++网络库对外接口</article>
	</classify>
	<classify name="lua设计模式">
		<article>设计模式总结</article>
	</classify> 
</blog> 
#include <stdio.h>
#include <time.h>

#include "globalvariable.h"
#include "luaengine.h"
#include "gamesocket.h"
#include "log.h"
#include "dll.h"
#include "MyDll.h"
#include "gametime.h"
#include "frame.h"
#include "datatable.h"
#include "showcrash.h"
#include "globalfunction.h"
#include "tinyxml/tinyxml.h"

void Init()
{

    TiXmlDocument doc;

    if (doc.LoadFile("conf/info.xml"))
    {
        TiXmlElement* rootElement = doc.RootElement();
        TiXmlAttribute* attr =rootElement->FirstAttribute();
        printf("%s\n",attr->Value());
        TiXmlElement * curElement = rootElement->FirstChildElement ();
        printf("----博主%s\n",curElement->GetText());
        curElement = curElement->NextSiblingElement();
        while(curElement)
        {
            attr = curElement->FirstAttribute();
            printf("----%s\n",attr->Value());
            TiXmlElement * subcurElement = curElement ->FirstChildElement ();
            while (subcurElement )
            {
                printf("--------%s\n",subcurElement->GetText());
                subcurElement  = subcurElement ->NextSiblingElement();
            }
            curElement = curElement->NextSiblingElement();
        }
    }
    else
    {
        printf("can not parse xml conf/info.xml\n") ;
    }

}


int main()
{
    Init();
    return 0;
}

上面的代码中我只是包含了tinyxml.h(#include "tinyxml/tinyxml.h"),就可以正确地调用tinyxml。所以可以看出将tinyxml整合到自己的代码是相当方便的。将服务端添加tinyxml只是开始,下一步要对tinexml进行封装,使之更适用我的服务端。
记得留意下一篇文章,我的服务端之xml类型转换:http://blog.csdn.net/yitouhan/article/details/17333191
如有不正确,欢迎交流讨论!
交流群:315249378

分享到:
评论

相关推荐

    python入门到高级全栈工程师培训 第3期 附课件代码

    08 django模板之继承标签extend和添加标签include 第51章 01 数据库表与表之间的一对多多对多的关系 02 Django的ORM的概念 03 ORM对单表的增删改操作 04 ORM查询API 05 模糊查询之万能的双下换线 第52章 01 上节...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...

    asp与asp.net的区别

    由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。此外,它可通过内置的组件实现更强大的功能,如使用A...

    vc++ 应用源码包_1

    我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,...

    vc++ 应用源码包_2

    我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,...

    vc++ 应用源码包_6

    我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,...

    vc++ 应用源码包_3

    我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,...

    vc++ 应用源码包_5

    我想知道的人就多了,其实暴风影音就是Media Player Classic,暴风影音只是同我一样从Gabest官方下载到了Media Player Classic的源码,不同的是,暴风影音将Media Player Classic改成了自己的名字并加入了许多的解码器,...

    JAVA上百实例源码以及开源项目源代码

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java开源包1

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包11

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包2

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包3

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包6

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包5

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包10

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包4

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包8

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

    java开源包7

    注入型解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 ...

Global site tag (gtag.js) - Google Analytics