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

问题描述 投票:7回答:2

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

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

我需要做什么?

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

我使用doc.Save();将其保存到文件中。

我试过了:

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

它仍以小写形式出现。

c# .net xml declaration linq-to-xml
2个回答
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()
    {
    }
}

然后使用它:

using (var writer = new CustomXmlTextWriter("file.xml"))
{
    doc.Save(writer);
}

1
投票

工作解决方案,使用XmlDocument:

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

正如用户726720指出的那样,Kirill Polishchuk给出的答案会丢失格式并需要模式代码。

© www.soinside.com 2019 - 2024. All rights reserved.