如何通过套接字发送大型xml文件

时间:2012-03-28 15:28:05

标签: c# java xml sockets stream

我必须通过套接字发送大量的xml数据。 xml文件的示例(服务器端生成此类文件):

<message>
 <data>
  <param1>12345</param1>
  <param2>234</param2>
 </data>
...
 <data>
  <param1>321</param1>
  <param2>34234</param2>
 </data>
</message>

然后客户端收到此类数据。 客户端必须解析此文件并将参数插入db。

客户端按部分(字节大小)接收此数据:

byte[] receivedData = new byte[1024];
int receivedBytesLen = streamFromServer.read(receivedData);

如何处理这些数据?

  1. 例如,如果我将所有文件数据读取到客户端的变量然后进行处理。我认为这不好 - 可能是问题(大量数据)。
  2. 将所有数据写入临时文件然后进行处理?创建文件,删除...
  3. 同时阅读和处理。但是xml还没有完整。
  4. 别的什么?

2 个答案:

答案 0 :(得分:2)

几年前,我为一家使用运动电话服务的广播公司开发了一种解决方案,该服务以这种方式运作。

他们的一些提示:

  1. 确保每封邮件都有唯一标识符。它可以像文档元素中的guid属性一样简单。
  2. 多次传输消息(除非这是一个点对点,并且您的解决方案内置了确认)。客户端应该维护成功处理的消息的唯一标识符的哈希表,并忽略它已经处理的重复项。
  3. 保持邮件小。您真的需要所有“数据”节点都在一条消息中吗?你能否将它们作为个人信息发送?
  4. 使用不可行的XML字符分隔您的消息。 CR和LF不起作用。此服务使用{0x02}个字节来分隔消息。在客户端使用它来查找XML文档之间的分隔点。

答案 1 :(得分:0)