Загружаем XML документы. Документы правильные (верифицированные). Для загрузки используем методы Load или LoadXml объекта XmlDocument.
По крайней мере в .NET 1.1 (в остальных не проверял) при загрузке XML документов
из строк иногда возникает ошибка парсинга "The data at the root level is invalid. Line 1, position 1". Внешних причин возникновения ошибки пока установить не удалось. Известно, что ошибка может возникнуть на тех документах, которые ранее успешно загружались, а потом может исчезнуть. Известно, что такое изменение происходит лишь после сохранения документов (даже если их содержание не изменялось).
В инете говорят, что такая ошибка возникает лишь в методе LoadXml, а метод Load, если ему передать какой-нибудь TextReader, исключения с этой ошибкой не вызывает - так этот баг (или фича) лечится.
Провёл серию экспериментов, которая показала, что оба метода генерируют ошибку при загрузки XML из строк, при загрузке тех же XML из файлов ошибка не возникает. По стеку видно, что ошибку генерирует XmlValidatingReader, в который обёртывается любой TextReader, попадающий на вход Load, а LoadXml создаёт StringReader для чтения строки.
По задаче я получаю XML от web-сервиса как массив байтов (byte[]), который через Encoding преобразую в строку. Содержание этой строки не воспринимается как XML. Однако, если эту строчку сохранить в файл на диск, и загружать её из файла StreamReader'ом, тогда XML загружается успешно.
Такое решение со временным файлом для web-приложения неприемлимо по множеству причин.
Кто знает, как победить XmlDocument и заставить его загружать XML из строки?