Я видел несколько постов здесь на SO о загрузке XML-документов из какого-либо источника данных, где данные имеют собственную преамбулу Microsoft UTF-8 (например, эта ).
Тем не менее, я не могу найти элегантное (и работающее!) Решение, которое не предусматривает ручного удаления символов спецификации.
Например, есть этот пример :
byte[] b = System.IO.File.ReadAllBytes("c:\\temp_file_containing_bom.txt");
using (System.IO.MemoryStream oByteStream = new System.IO.MemoryStream(b)) {
using (System.Xml.XmlTextReader oRD = new System.Xml.XmlTextReader(oByteStream)) {
System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();
oDoc.Load(oRD);
Console.WriteLine(oDoc.OuterXml);
Console.ReadLine();
}
}
... но он по-прежнему выдает исключение «неверные данные».
Моя проблема в том, что у меня есть огромный массив байтов, который иногда содержит спецификацию, а иногда - нет. Мне нужно загрузить его в XMLDocument. И я не верю, что я тот, кто должен заботиться о «вспомогательных» байтах.