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

我的服务端之添加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

分享到:
评论

相关推荐

    asp.net操作xml

    在ASP.NET中,XML(eXtensible Markup Language)是一种常用的数据存储和交换格式,它具有结构化、自解释和平台无关的特点。本资源集合涵盖了ASP.NET操作XML的各种方法,包括添加、删除、查询和修改XML文档内容。...

    WCF 返回XML去除默认命名空间实例Demo

    3. **配置服务行为**:在服务配置文件中,可能需要修改`&lt;behavior&gt;`元素,添加`useDefaultXmlSerializer="false"`属性,然后使用自定义的XML序列化器。 4. **测试和验证**:修改后,重新编译并运行服务,检查返回的...

    CAS4.1.4服务端和客户端实例

    4. 配置客户端应用,将CAS认证集成到你的应用中,这通常涉及添加和配置CAS过滤器,以及设置服务URL。 5. 测试SSO功能,确保用户能够通过CAS服务器进行一次性登录,并在不同应用间无缝切换。 通过这个实例,你可以...

    腾讯tars 服务端的本地调试

    - `-Xrunjdwp:transport=dt_socket,address=9000,server=y,suspend=n`:这是Java调试参数,设置使用socket传输方式、指定调试端口为9000,server模式启动调试器,不暂停JVM等待远程调试器连接。 ### 总结 通过上述...

    cas 系统实例 服务端配置(一)

    在每个依赖 CAS 认证的应用中,需要配置 CAS 客户端,如添加 CAS 的过滤器,设置回调地址等。 在实际操作中,可能还需要处理 SSL 证书、自定义主题、多语言支持、审计日志等高级配置。学习 CAS 的服务端配置不仅...

    CAS单点登录(SSO)服务端自定义认证+CAS客户端配置+CAS完整使用文档+CAS4.2.7 cas-serv服务端源码 cas-client客户端源码

    压缩包中包含的文档将指导你如何配置CAS客户端,包括在Spring或Web.xml中添加必要的配置项,设置服务URL,以及处理TGT(Ticket Granting Ticket)和ST(Service Ticket)。 3. **CAS4.2.7源码**: CAS 4.2.7是CAS...

    第五课:服务端实现与可视化展示1

    以下是这些知识点的详细解释: 1. **tuling-agent 项目架构** - **工程结构**: - **Bootstrap**: 作为启动器,它的主要任务是在目标环境中部署并启动Agent。它还负责根据版本号从服务器下载最新的Agent。 - **...

    详解spring集成mina实现服务端主动推送(包含心跳检测)

    本篇文章主要介绍了Spring集成Mina实现服务端主动推送(包含心跳检测),具有一定的参考价值,以下是对该知识点的详细解释和总结。 一、Spring集成Mina的配置 在Spring工程中集成Mina需要在pom.xml文件中添加以下...

    Axis java开发所需要用到的jar包资源整合

    描述中提到的"WebService Axis 接口java开发客户、服务端所需要用到的jar包资源整合",进一步解释了这些资源的用途。Axis是一个开源的Java Web服务框架,它提供了客户端和服务端的API,用于构建和部署Web服务。...

    C#.ASP.NET.完整WCF例子程序服务器端运行详细配置参考.pdf

    3. 浏览到包含WCF服务端项目的文件夹,选中该项目并添加。 #### 3. 设置WCF服务器端为启动项目 为了方便调试和服务端的启动,通常需要将WCF服务器端设置为解决方案的启动项目。操作步骤如下: 1. 在解决方案资源...

    gSOAP手册 英文 很重要

    - XML命名空间考虑:解释了在处理XML命名空间时需要注意的问题。 - 生成C++客户端代理类的方法。 - 如何构建SOAP/XML Web服务: - 示例:提供一个具体的例子,演示如何创建Web服务。 - 创建独立服务器的过程。 ...

    推送实例push

    以下是对这个文件主要部分的解释: 1. 引入依赖库 首先,你需要在项目中引入极光推送的SDK依赖。这通常是在build.gradle文件中添加相应的依赖项,确保项目可以正常编译并调用极光API。 2. 初始化JPush 在应用的主...

    axis2相关jar包.rar

    - `xmlschema.jar`: 实现了XML Schema解析器和验证器。 - `xercesImpl.jar`和`xml-apis.jar`: Xerces是流行的XML解析器,`xml-apis.jar`提供了XML相关的API接口。 5. **其他辅助库**: - `log4j.jar`: 可选的...

    webservice的cxf框架拦截器demo.rar

    在CXF服务端,你可以通过实现`org.apache.cxf.interceptor.Fault`和`org.apache.cxf.phase.PhaseInterceptorChain`接口的类来创建自定义拦截器,并将它们添加到服务的拦截器链中。 4. **“inter_client”**: 这...

    基于CXF的webService本地数据交互----PC端与Android端(三)

    - Android可能需要处理权限问题,如添加`&lt;uses-permission android:name="android.permission.INTERNET" /&gt;`到AndroidManifest.xml。 - Android内存限制可能需要优化Web Service的调用和数据处理,以避免内存泄漏...

    Flex4+Blazeds4.0+Spring3.0+hibernate2.5.2整合笔记

    在 web.xml 文件中,需要删除所有 Flex 相关配置,并添加以下内容,以便使用 Spring web 应用的前端控制器处理所有应用请求。 配置 applicationContext.xml 在第四步中,需要创建 spring 应用上下文配置文件 ...

    有推客户端中间件(AOESDK)API使用说明书[归纳].pdf

    - 配置AndroidManifest.xml:添加必要的权限和BroadcastReceiver,以确保SDK正常工作。 - 实现广播和Service:设置接收消息的广播接收器,并配置后台服务以处理长连接。 - 调试:使用提供的调试工具或日志系统,检查...

Global site tag (gtag.js) - Google Analytics