Подтвердить что ты не робот

Загрузка xml с кодировкой UTF 16 с использованием XDocument

Я пытаюсь прочитать XML-документ, используя метод XDocument. но я получаю сообщение об ошибке, когда xml имеет

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

Когда я удалил кодировку вручную. Он отлично работает.

Я получаю сообщение об ошибке < Нет метки порядка байтов в Unicode. Невозможно переключиться на Unicode. "

Я попробовал поиск, и я приземлился здесь →

Почему С# XmlDocument.LoadXml(строка) терпит неудачу при включении заголовка XML?

Но не удалось решить мою проблему.

Мой код:

XDocument xdoc = XDocument.Load(path);

Любые предложения

спасибо.

4b9b3361

Ответ 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)