使用 StringWriter、StringBuilder 和 XmlTextWriter 加载 XML 并将其写入字符串
Posted
技术标签:
【中文标题】使用 StringWriter、StringBuilder 和 XmlTextWriter 加载 XML 并将其写入字符串【英文标题】:Use StringWriter, StringBuilder and XmlTextWriter to load an XML and write it into a string 【发布时间】: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
【问题讨论】:
xmlFile.OuterXml
有什么问题(见***.com/questions/2407302/…)?
只用File.ReadAllText
? '编码更改'的意思并不完全清楚,但我猜它是this question的副本。
【参考方案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();
【讨论】:
以上是关于使用 StringWriter、StringBuilder 和 XmlTextWriter 加载 XML 并将其写入字符串的主要内容,如果未能解决你的问题,请参考以下文章
使用 StringWriter、StringBuilder 和 XmlTextWriter 加载 XML 并将其写入字符串