带有SslStream的XmlTextReader - 从流中读取多个xml

时间:2012-01-31 22:31:15

标签: c# .net xml sockets ssl

我有一个SslStream,我从中收到自发的XML消息。我想使用XmlTextReader处理来自该流的XML消息。不幸的是,它允许我只读取第一个XML。当我收到第一个xml后调用Read时,该方法抛出异常: XML文档中的多个根(“Xml_MultipleRoots”)。我相信这是一个问题,流一个接一个地提供xml消息,但XmlTextReader只能处理一个。 如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

首先,不要再使用new XmlTextReader()了。使用XmlReader.Create(),这是自.NET 2.0以来创建XmlReader的首选方法。

其次,使用接受Create对象的XmlReaderSettings的重载:

using (var reader = XmlReader.Create(sslStream, 
                                     new XmlReaderSettings
                                         {
                                             ConformanceLevel = ConformanceLevel.Fragment
                                         }))
{
// ... read xml
}

答案 1 :(得分:1)

您应该为每条消息在流周围创建一个新的XmlReader。