Получить UTF-8 в верхнем регистре, используя XDocument - PullRequest
7 голосов
/ 18 декабря 2011

Мне нужно иметь кодировку и версию XML вверху моего документа XML, который я делаю с XDocument.

У меня есть это, но оно в нижнем регистре, и оно должно быть в верхнем регистре.

Что мне нужно сделать?

Я объявляю новый XML-документ, используя класс XDocument с именем 'doc'.

Я сохраняю это в файл, используя doc.Save();.

Я пытался:

  • doc.Declaration.Encoding.ToUpper();
  • Объявление нового XDeclaration
  • Введите кодировку в верхнем регистре и установите мой doc.Declaration на мой XDeclaration.

Это все еще проходит в нижнем регистре.

Ответы [ 2 ]

4 голосов
/ 18 декабря 2011

Вы можете создать пользовательский XmlTextWriter, например:

public class CustomXmlTextWriter : XmlTextWriter
{
    public CustomXmlTextWriter(string filename)
        : base(filename, Encoding.UTF8)
    {

    }

    public override void WriteStartDocument()
    {
        WriteRaw("<?xml VERSION=\"1.0\" ENCODING=\"UTF-8\"?>");
    }

    public override void WriteEndDocument()
    {
    }
}

Затем используйте его:

using (var writer = new CustomXmlTextWriter("file.xml"))
{
    doc.Save(writer);
}
1 голос
/ 18 апреля 2018

Рабочий раствор, с использованием XmlDocument:

 myXmldoc.FirstChild.Value = "version=\"1.0\" encoding=\"UTF-8\""; 

Как указал пользователь726720, ответ от Кирилла Полищука теряет форматирование и требует кода режима.

...