【问题标题】:XmlTextReader with SslStream - reading multiple xml from stream带有 SslStream 的 XmlTextReader - 从流中读取多个 xml
【发布时间】:2012-01-31 22:31:15
【问题描述】:

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

【问题讨论】:

  • xmls之间不是有分隔符吗?

标签: c# .net xml sockets ssl


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 问题是 Ssl 是一个流,因此通过一次读取操作,不能一次接收到一个 XML 文档的所有数据。最后我说意外的 EOF 异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多