使用多个对象反序列化.NET流

时间:2014-03-25 21:38:32

标签: c# .net xml serialization stream

当我从网络接收数据时,我有一个MemoryStream。由于数据可以被分解,因此流有可能在流中存储部分消息或多个消息。反序列化时,我将指针放回流的开头,并尝试反序列化我的一类。我将反序列化包装在try catch块中,但是我进入反序列化行,应用程序退出(没有例外,在函数中没有更多行运行等)。

我有多个问题:

  1. 从网络接收可能会或可能不会完整的XML数据流的最佳方法是什么?如果是这样,可能会有或不会有多条消息?
  2. 解串器是否需要了解用于解码MemoryStream中的XML的编码?
  3. 反序列化是否将流指针放在反序列化对象之后?
  4. 您可以在单个流中反序列化多个对象吗?

1 个答案:

答案 0 :(得分:0)

1)您可以利用“提供对XML数据流的只进,只读访问”的XmlReader类。这可能有助于您翻译可能不完整的xml数据。 http://msdn.microsoft.com/en-us/library/vstudio/system.xml.xmlreader

2)如果您指的是混合ASCII,UTF-8等,那么是,否则我不确定问题是什么。

3)这取决于您正在使用的解串器。

4)是的,使用XMlReader类,您可以巧妙地提取属性和xml片段供以后使用(虽然解决方案不优雅而且相当丑陋)