比如我的数据包格式:
头部:
unsigned short  opttype 操作类型  
unsigned short  headsize 数据包头部长度
unsigned short  packsize 数据包长度
数据
BYTE data  数据
怎样用XML来封装呀?
从没用过XML,请详细点好吗?
谢谢!

解决方案 »

  1.   

    如果data数据是二进数据,而且数据很大的话,这样做不太适合的.
      

  2.   

    unsigned short  headsize 数据包头部长度
    unsigned short  packsize 数据包长度
    =====>按照xml标准做,你不需要加这些东西,它们可以省略,这也是xml统一标准的好处;标准xml解析器能区别数据元另外:xml封装的是字符串,其中不可以有ascii 0这样的字符,而且其不适应包装大量二进制数据你的数据可以这样包装:
    <head>
    <cmd>10001</cmd>                                         //====> unsigned short opttype 
    <data>3401234n1234onc21349q234flksdfafa9erqwerqwerqwerqer</data>   //==>BYTE data  数据
    </head>再从网上download一个xml解析器,做为你程序的模块即可
      

  3.   

    为什么不用unsigned short  headsize 数据包头部长度,unsigned short  packsize 数据包长度
    那我接收时怎样处理粘包的问题?
      

  4.   

    以前都是用结构封装的
    这次换了个系统设计师,非叫用XML不可,不知道处于什么想法?XML有很多优势吗?
      

  5.   

    以前都是用结构封装的
    这次换了个系统设计师,非叫用XML不可,不知道处于什么想法?XML有很多优势吗?
    -------------------------------------------------------------------------
    1.就效率来说,肯定是结构体来得高,XML肯定是比较慢的。
    2.两者都可以设计出可扩展的协议来。
    3.相比之下,使用XML设计出的可扩展协议更加方便,但是在传输二进制数据时,
    可以会有限限制,不过这也跟XML Parser的不一样而不一样的。不过到目前为止,
    本人还没看到可以很好的进行二进制数据传输的Parser,但是,他可以通过编成
    其他的编码方式来进行传输,但是这样将会进一步损失效率。而使用结构体就没
    有这方面的问题,但是设计出可扩展协议,将对开发人员要求比较高,在使用时
    也要多些注意。
      

  6.   

    你不是对stl很熟吗,看源码吧。很多xml用temple,stl做的,开源的大把http://www.vckbase.net/code/listcode.asp?mclsid=22&sclsid=2201&page=1http://www.firstobject.com/ 里有两个常用的xml解析器
    一个依赖于MS的<afxtempl.h>叫Markup
    另一个是stl的只需<string>叫MarkupSTL,个人更喜欢用这个,在你的模型中用MarkupSTL.h/cpp即可,它有demo