データにMicrosoft独自のUTF-8プリアンブル(たとえば、これ)が含まれているデータソースからのXMLドキュメントのロードに関するSOに関するいくつかの投稿を見てきました。
ただし、BOM文字を手動で削除する必要のないエレガントな(そして機能する!)ソリューションを見つけることができません。
たとえば、次の例があります。
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();
}
}
...しかし、それでも「無効なデータ」例外をスローし続けます。
私の問題は、BOMを含む場合と含まない場合がある、巨大なバイト配列を持っていることです。XMLDocumentにロードする必要があります。そして、私は「ヘルパー」バイトの世話をしなければならない人だとは思いません。