使用XDocument以大写字母获取UTF-8

JMK*_*JMK 7 .net c# xml declaration linq-to-xml

我需要在我的XML文档的顶部使用XML编码和版本XDocument.

我有这个,但它是小写的,它需要是大写的.

我需要做什么?

我使用XDocument名为'doc' 的类声明了一个新的XML文档.

我使用保存到文件doc.Save();.

我试过了:

  • doc.Declaration.Encoding.ToUpper();
  • 宣布一个新的 XDeclaration
  • 以大写字母键入编码并将我设置doc.Declaration为my XDeclaration.

它仍以小写形式出现.

Kir*_*huk 4

您可以创建自定义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()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用它:

using (var writer = new CustomXmlTextWriter("file.xml"))
{
    doc.Save(writer);
}
Run Code Online (Sandbox Code Playgroud)

  • 它离完美还很远。它甚至不是 XML。XML 允许(实际上更喜欢)编码名称为大写,但关键字“encoding”和“version”必须为小写。 (3认同)