【问题标题】:Use StringWriter, StringBuilder and XmlTextWriter to load an XML and write it into a string使用 StringWriter、StringBuilder 和 XmlTextWriter 加载 XML 并将其写入字符串
【发布时间】:2018-07-26 20:47:09
【问题描述】:

我在给定位置有一个 XML 文件,我希望将 XML 的内容保存在一个字符串变量中。但是,当我打印出来时,编码会发生变化。我就是这样做的。

    XmlDocument xmlFile = new XmlDocument();
    xmlFile.Load(xmlFileLocation);

    using (StringWriter stringWriter = new StringWriter(new StringBuilder()))
    {
         using (XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter) { Formatting = Formatting.Indented })
         {
             xmlFile.Save(xmlTextWriter);
         }

         return stringWriter.ToString();
    }

当我尝试使用给定的编码初始化 XmlTextWriter (new XmlTextWriter(stringWriter, Encoding.UTF8)) 时,我遇到了 StringWriter 的问题,但我不知道如何解决。有什么想法吗?

问题是:无法从 StringWriter 转换为 Stream

【问题讨论】:

标签: c# xml xml-serialization xmlwriter


【解决方案1】:

使用StringWriter 的编码始终为UTF-16 且无法更改。当您想使用具有不同编码的StringWriter 时,可以将StringWriter 子类化。具体操作方法请参考this回答。

使用您的代码,这将更改为

using (EncodingStringWriter eStringWriter = new EncodingStringWriter (new StringBuilder(), Encoding.UTF8))
{
     using (XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter) { Formatting = Formatting.Indented })
     {
         xmlFile.Save(xmlTextWriter);
     }

     return eStringWriter.ToString();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 2010-10-10
    • 2023-03-21
    • 1970-01-01
    • 2016-05-14
    • 2012-12-25
    • 2022-12-17
    • 1970-01-01
    相关资源
    最近更新 更多