Загрузка xml с кодировкой UTF 16 с использованием XDocument
Я пытаюсь прочитать XML-документ, используя метод XDocument.
но я получаю сообщение об ошибке, когда xml имеет
<?xml version="1.0" encoding="utf-16"?>
Когда я удалил кодировку вручную. Он отлично работает.
Я получаю сообщение об ошибке < Нет метки порядка байтов в Unicode. Невозможно переключиться на Unicode. "
Я попробовал поиск, и я приземлился здесь →
Почему С# XmlDocument.LoadXml(строка) терпит неудачу при включении заголовка XML?
Но не удалось решить мою проблему.
Мой код:
XDocument xdoc = XDocument.Load(path);
Любые предложения
спасибо.
Ответы
Ответ 1
Похоже, файл, который вы пытаетесь прочитать, не кодируется как Unicode. Вы можете реплицировать поведение, пытаясь открыть файл, закодированный как ANSI, с кодировкой в файле XML, указанном как utf-16
.
Если вы не можете убедиться, что файл закодирован правильно, вы можете прочитать файл в потоке (чтобы StreamReader
определить кодировку), а затем создать XDocument
:
using (StreamReader sr = new StreamReader(path, true))
{
XDocument xdoc = XDocument.Load(sr);
}
Ответ 2
Я попробовал и нашел другой способ сделать это!
XDocument xdoc = XDocument.Parse(System.IO.File.ReadAllLines(path));
Ответ 3
Этот код:
System.IO.File.ReadAllLines(path)
возвращает массив строк.
Правильный код:
System.IO.File.ReadAllText(path)