鸿 网 互 联 www.68idc.cn

游戏服务端之添加xml解释器

来源:互联网 作者:佚名 时间:2015-08-10 07:55
在游戏服务端中,我们会将可变的东西写数据库里,而将一成不变的东西写在配置里。在现实开发过程中,大多数开发者会选用xml作为服务的配置。原因是xml树形结构化表示、标记清晰及易于理解和方便移植。下面我将会为我的服务端添加tinyxml。 tinyxml是一个简单的
在游戏服务端中,我们会将可变的东西写数据库里,而将一成不变的东西写在配置里。在现实开发过程中,大多数开发者会选用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进行封装,使之更适用我的服务端。
http://blog.csdn.net/yitouhan/article/details/17333191
如有不正确,欢迎交流讨论!
交流群:315249378

网友评论
<