Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用XDocument以大写形式获取UTF-8_C#_.net_Xml_Declaration_Linq To Xml - Fatal编程技术网

C# 使用XDocument以大写形式获取UTF-8

C# 使用XDocument以大写形式获取UTF-8,c#,.net,xml,declaration,linq-to-xml,C#,.net,Xml,Declaration,Linq To Xml,我需要在使用XDocument制作的XML文档顶部有XML编码和版本 我有这个,但它是小写的,而且必须是大写的 我需要做什么 我使用名为“doc”的XDocument类声明了一个新的XML文档 我使用doc.save()将其保存到文件中 我试过: doc.Declaration.Encoding.ToUpper() 声明新的XDeclaration 键入大写编码并将mydoc.Declaration设置为myXDecaration 它仍然是小写的。您可以创建自定义的XmlTextWriter

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

我有这个,但它是小写的,而且必须是大写的

我需要做什么

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

我使用
doc.save()将其保存到文件中

我试过:

  • doc.Declaration.Encoding.ToUpper()
  • 声明新的
    XDeclaration
  • 键入大写编码并将my
    doc.Declaration
    设置为my
    XDecaration

它仍然是小写的。

您可以创建自定义的
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()
    {
    }
}

使用XmlDocument的工作解决方案:

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

正如user726720所指出的,Kirill Polishchuk给出的答案失去了格式,需要模式代码。

为什么需要大写?对于符合标准的XML解析器来说,这应该没有什么区别。我同意,但这不取决于我,它需要大写。我尝试了“doc.Declaration.Version.ToUpper”,声明了一个新的XDeclaration,用大写字母键入版本,并将我的“doc.Declaration”设置为我的XDeclaration。它仍然是小写的,我使用的是doc.Save();谢谢,请编辑您的问题,并使用您刚刚在评论中输入的详细信息进行更新。阅读您的问题的人可能会忽略这些。您是否尝试过循环所有
doc.Declaration
属性和
touper
属性名称?是的,我得到的对象引用未设置为对象的实例。当我尝试“doc.Declaration.Version=“UTF-8”时我在这一行代码中也遇到了同样的错误。这远远不是完美的。它甚至不是XML。XML允许(确实更喜欢)编码名称是大写的,但是关键字“encoding”和“version”必须是小写的
 myXmldoc.FirstChild.Value = "version=\"1.0\" encoding=\"UTF-8\"";