在游戏服务端中,我们会将可变的东西写数据库里,而将一成不变的东西写在配置里。在现实开发过程中,大多数开发者会选用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类型转换
如有不正确,欢迎交流讨论!
交流群:315249378
作者:a374826954 发表于2013-12-19 23:59:31 原文链接
阅读:114 评论:0 查看评论