XmlTextReader с SslStream - чтение нескольких XML из потока - PullRequest
3 голосов
/ 01 февраля 2012

У меня есть SslStream, от которого я получаю спонтанные XML-сообщения. Я хочу использовать XmlTextReader для обработки сообщений XML из этого потока. К сожалению, это позволяет мне читать только первый XML. Когда я вызываю Read после получения первого xml, метод выдает исключение: Несколько корней в XML-документах («Xml_MultipleRoots»). Я считаю, что это проблема, что поток предоставляет сообщения XML по одному, но XmlTextReader может обрабатывать только одно. Как это исправить?

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Прежде всего, не используйте new XmlTextReader() больше. Используйте XmlReader.Create(), который был предпочтительным способом создания XmlReader начиная с .NET 2.0.

Во-вторых, используйте перегрузку Create, которая принимает XmlReaderSettings объект:

using (var reader = XmlReader.Create(sslStream, 
                                     new XmlReaderSettings
                                         {
                                             ConformanceLevel = ConformanceLevel.Fragment
                                         }))
{
// ... read xml
}
1 голос
/ 01 февраля 2012

Вы должны создать новый XmlReader вокруг потока для каждого сообщения.

...