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