老大让我 套接字传输数据 用 zlib压缩的xml数据格式,给了我一个模板如下:<Cmd>
<Type>Login</Type>
<Content>
<User>user name</User>
<Password>md5 code</Password>
</Content>
</Cmd>我要怎么用呢,把 cmd 到 /cmd 之间的 数据 从文件读出来,转化成 char * 再给到send(socket, (char*)pbuffer, len-actual, 0);就可以了吗?我本来都用 typedef struct _tag_ST_COMMAND
{
int16_t size;
int16_t num;
int16_t type;
int8_t  *pbuffer;
int8_t  crc;
}ST_COMMAND;这种格式 直接发送的,可不可以 不通过文件 XML读写 直接 把 数据类型 转化到 XML能解析 的  char *数据呢:

解决方案 »

  1.   

    呃,xml文件不就是纯文本的格式吗?直接读取文件然后用zlib压缩下发送就是了,接收到后再用zlib解一下出来把它当char*读。
    你的XML能解析式什么意思?用哪种方式解析?
      

  2.   

    刚才看漏了,要读<cmd></cmd>里面的东西传是吧。要是不长的话直接读取文件,付给一个CString,find “<cmd>”和“</cmd>”的位置,用mid读取中间的,最后用zlib压缩一把就能发出去了。
      

  3.   

    哦,问题是已经 变成 CHAR * 类型的数据格式了 啊, 还要怎么 zlib 压缩呢,还是 一个 XML 文档 ,先 经过 zlib 压缩 ,然后 再 读取 成char * 格式 啊,就是这个 XML 压缩搞不懂 啊,呵呵 
      

  4.   

    不通过文件,而是在内存操作,直接 把 自己的结构体 数据 转换成 XML 格式的字符串数据,
      

  5.   

    可以使用MSXML或是一些类TinyXML,CMarkUp等类解析都可以的
      

  6.   


    char xml[20] = "<type> login </login>";把xml 发送,这样就可以了吗?