使用XDocument加载编码为UTF 16的xml

我正在尝试使用XDocument方法读取xml文档。 但是我得到一个错误,当XML有

<?xml version="1.0" encoding="utf-16"?> 

当我手动删除编码。它完美的作品。

我收到错误“ 没有Unicode字节顺序标记,不能切换到Unicode”。

我试图寻找,我在这里登陆 – >

为什么包含XML头时C#XmlDocument.LoadXml(string)失败?

但解决不了我的问题。

我的代码:

 XDocument xdoc = XDocument.Load(path); 

有什么build议么 ??

谢谢。

它看起来像你试图读取的文件不是编码为Unicode。 您可以通过尝试打开一个编码为ANSI的文件来复制该行为,并将该文件指定为utf-16的XML文件中的编码。

如果您不能确保文件编码正确,那么您可以将文件读StreamReader (让StreamReader检测编码),然后创buildXDocument

 using (StreamReader sr = new StreamReader(path, true)) { XDocument xdoc = XDocument.Load(sr); } 

我试过了,find了另一种方法!

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

此代码:

 System.IO.File.ReadAllLines(path) 

返回一个string数组。 正确的代码是:

 System.IO.File.ReadAllText(path)