可以使用XmlWriter将XML写入内存吗?
我正在创建一个返回XML的ASHX,但是当我这样做时它需要一条路径
XmlWriter writer = XmlWriter.Create(returnXML, settings)
但是returnXML现在只是一个空字符串(猜测它不起作用),但是我需要将XML编写成我可以作为响应文本发送的东西。 我尝试了XmlDocument,但它给了我一个错误,期待一个字符串。 我在这里想念的是什么?
如果你真的想写入内存,请传入StringWriter
或StringBuilder
如下所示:
using System; using System.Text; using System.Xml; public class Test { static void Main() { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; StringBuilder builder = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(builder, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("root"); writer.WriteStartElement("element"); writer.WriteString("content"); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); } Console.WriteLine(builder); } }
但是,如果要将其直接写入响应,则可以传入HttpResponse.Output
,而不是TextWriter
:
using (XmlWriter writer = XmlWriter.Create(Response.Output, settings)) { // Write into it here }
我身边缺少一些东西:刷新XmlWriter的缓冲区:
static void Main() { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; StringBuilder builder = new StringBuilder(); using (XmlWriter writer = XmlWriter.Create(builder, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("root"); writer.WriteStartElement("element"); writer.WriteString("content"); writer.WriteEndElement(); writer.WriteEndElement(); writer.WriteEndDocument(); writer.Flush(); } Console.WriteLine(builder); }
StringBuilder xml = new StringBuilder(); TextWriter textWriter = new StringWriter(xml); XmlWriter xmlWriter = new XmlTextWriter(textWriter);
然后,使用xmlWriter执行所有xml写入,并将其直接写入StringBuilder。
编辑:感谢Jon Skeet的评论:
StringBuilder xml = new StringBuilder(); XmlWriter xmlWriter = XmlWriter.Create(xml);
最好的方法是直接写入响应输出流。 它是一个内置于ASP.NET的流,允许您将任何输出写为流,在这种情况下,您可以将XML写入其中。
上述就是C#学习教程:可以使用XmlWriter将XML写入内存吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1252543.html