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

时间:2010-12-31 07:36:19

标签: c# xml winforms visual-studio-2008 unicode

我正在尝试使用XDocument方法读取xml文档。 但是当xml有

时我收到错误
<?xml version="1.0" encoding="utf-16"?>

当我手动删除编码时。它运行正常。

我收到错误“没有Unicode字节顺序标记。无法切换到Unicode。

我试着搜索,然后我降落在这里 - &gt;

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

但无法解决我的问题。

我的代码:

XDocument xdoc = XDocument.Load(path);

有什么建议吗?

谢谢。

3 个答案:

答案 0 :(得分:58)

看起来您尝试阅读的文件未编码为Unicode。您可以尝试使用指定为utf-16的XML文件中的编码打开编码为ANSI的文件来复制行为。

如果您无法确保文件编码正确,那么您可以将文件读入流中(让StreamReader检测编码),然后创建XDocument

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

答案 1 :(得分:9)

我试过了,并找到了另一种方法!

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

答案 2 :(得分:6)

此代码:

System.IO.File.ReadAllLines(path)

返回一个字符串数组。 正确的代码是:

System.IO.File.ReadAllText(path)