【问题标题】:Create start XML manually手动创建启动 XML
【发布时间】:2018-03-22 08:48:52
【问题描述】:

我想创建XML 文件所以我使用这种方式:

XmlWriterSettings settings = new XmlWriterSettings
                  {
                      Indent = true,
                      Encoding = Encoding.Unicode
                  };

string xmlPath = @"c:\file.xml";
XmlWriter xmlWriter = XmlWriter.Create(xmlPath, settings);
xmlWriter.WriteStartDocument(false);

结果:

<?xml version="1.0" encoding="utf-16" standalone="no"?>
<cp>
  <user>NA</user>
  <password>NA</password>
</cu>

但我希望这个开始 XML 将是 Upper case:

<?xml version="1.0" encoding="UTF-16" standalone="no"?>

所以我尝试手动创建这个开始:

 XmlWriterSettings settings = new XmlWriterSettings
                   {
                        Indent = true,
                        Encoding = Encoding.Unicode
                   };

string xmlPath = @"c:\file.xml";
XmlWriter xmlWriter = XmlWriter.Create(xmlPath, settings);
xmlWriter.WriteRaw("<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n");

但结果是我收到了两次start:

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

【问题讨论】:

  • 为什么你希望编码是大写的?大小写无关紧要。硬编码编码只是 begs 的错误,例如,如果你将文件保存为默认的 UTF-8。
  • 顺便说一句,XmlWriter 使用的默认编码是 UTF-8。为什么要改成 UTF-16?

标签: c# xml encoding xmlwriter


【解决方案1】:

您可以在开始编写 xml 之前添加以下行。 也就是说,

settings.OmitXmlDeclaration = true;
string xmlPath = @"c:\file.xml";
XmlWriter xmlWriter = XmlWriter.Create(xmlPath, settings);
xmlWriter.WriteRaw("<?xml version=\"1.0\" encoding=\"UTF-16\" standalone=\"no\"?>\r\n");

这样,您的 xml 将不会使用默认声明创建,而是使用您专门添加的声明。

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2020-05-05
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多