【问题标题】:C# XmlDocument.Load(string) fails when Encoding for file is Unicode当文件编码为 Unicode 时,C# XmlDocument.Load(string) 失败
【发布时间】:2018-08-16 09:33:35
【问题描述】:

我想使用 XmlDocument.Load(String) 方法从 xml 文件加载 XMLDocument,但是当我尝试使用它时出现此错误:

System.Xml.XmlException: '.',十六进制值 0x00,无效 特点。第 2 行,位置 1。

当我尝试在 Visual Studio 中打开文件时,文件的编码是 Unicode,Visual Studio 会自动切换到 Unicode(UTF-8)。 在我使用 *Unicode(UTF-8) 编码保存文件后,程序运行完美。

为什么会发生这种情况,并且可以使用这种方法加载 Unicode 编码的文件?

【问题讨论】:

  • 如果第 1 行包含 utf8 以外的任何内容,则必须跳过第一行。导致问题的是文本文件的格式。
  • 我不想跳过 xml 文件中的任何行。我想了解为什么该方法会使用编码引发此异常,并且我希望即使编码是 Unicode 也能够加载 xml 文件(如果可能的话)。

标签: c# encoding character-encoding xmldocument


【解决方案1】:

我能够解决这个问题,方法是使用 StreamReader 类加载文件的内容,然后使用 XmlDocument.Load(Stream) 方法。

代码如下:

 XmlDocument xmlDocument = new XmlDocument();
 StreamReader reader = new StreamReader(filePath);
 xmlDocument.Load(reader);
 reader.Close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2017-09-28
    相关资源
    最近更新 更多