我正在尝试使用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);
有什么建议吗?
谢谢。答案 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)