XmlDocument没有读取文件

时间:2014-05-09 08:38:15

标签: c# xml openfiledialog

我尝试读取xml文件并使用xml执行某些操作。但是我将文件加载到XmlDocument时遇到问题。这不是错误。但是当加载,程序崩溃和编译器说:

没有Unicode字节顺序标记。无法切换到Unicode。

这是我的代码:

Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();
dlg.Filter = "xml (*.xml)|*.xml";
if (dlg.ShowDialog() == true){
XmlDocument doc = new XmlDocument();
doc.Load(dlg.FileName);

1 个答案:

答案 0 :(得分:1)

该文件不是unicode如果您不确定编码是否可以执行以下操作:

//  path + filename !!
using (StreamReader streamReader = new StreamReader(dlg.FileName, true))
{
    XDocument xdoc = XDocument.Load(streamReader);
}

或者那样做:

XDocument xdoc = XDocument.Parse(System.IO.File.ReadAllLines(dlg.FileName));

仔细阅读链接以了解问题。 @ZachBurlingame解决方案;你必须这样做:

Why does C# XmlDocument.LoadXml(string) fail when an XML header is included?

// Encode the XML string in a UTF-8 byte array
byte[] encodedString = Encoding.UTF8.GetBytes(xml);

// Put the byte array into a stream and rewind it to the beginning
MemoryStream ms = new MemoryStream(encodedString);
ms.Flush();
ms.Position = 0;

// Build the XmlDocument from the MemorySteam of UTF-8 encoded bytes
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(ms);

它必须有效!