带有SslStream的XmlTextReader – 从流中读取多个xml
我有一个SslStream,我从中收到自发的XML消息。 我想使用XmlTextReader处理来自该流的XML消息。 不幸的是,它允许我只读取第一个XML。 当我收到第一个xml后调用Read时,该方法抛出exception:XML文档中的多个根(“Xml_MultipleRoots”)。 我相信这是一个问题,流一个接一个地提供xml消息,但XmlTextReader只能处理一个。 如何解决这个问题?
首先,不要再使用new XmlTextReader()
了。 使用XmlReader.Create()
,这是自.NET 2.0以来创建XmlReader
的首选方法。
其次,使用接受XmlReaderSettings
对象的Create
的重载:
using (var reader = XmlReader.Create(sslStream, new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment })) { // ... read xml }
您应该为每条消息在流周围创建一个新的XmlReader。