目前,我有一个程序读取文件并使用XMLTextWriter将XML文件写入磁盘.不久之后,我读了文件并解析它.
我想把这两个程序放在一起.我想摆脱写入文件步骤.XMLTextWriter在构造时需要文件路径或Stream.有没有办法使Stream能够使用输出创建一个字符串而不是将其写入文件?
谢谢
最简单的方法是使用MemoryStream:
// To give code something to read
Stream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(text));
CallRealCode(memoryStream);
// To give code something to write:
Stream memoryStream = new MemoryStream();
CallRealCode(memoryStream);
string text = Encoding.UTF8.GetString(memoryStream.ToArray());
Run Code Online (Sandbox Code Playgroud)
(当然,调整为适当的编码.)
或者,如果您可以使用a TextWriter而不是a 来提供代码Stream,则可以使用a StringWriter.需要注意的一点是,默认情况下,StringWriter会将自己宣传为想要使用UTF-16.您可以使用子类覆盖此行为,如下所示:
public sealed class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}
Run Code Online (Sandbox Code Playgroud)
(显然你也可以用更灵活的方式做到这一点......)