我在这里看到了几篇关于从某些数据源加载 XML 文档的帖子,这些数据源的数据具有 Microsoft 专有的 UTF-8 前导码(例如,这个)。
但是,我找不到不涉及手动剥离 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 中加载它。而且我不相信我是必须照顾“帮助”字节的人。