C#学习教程:可以使用XmlWriter将XML写入内存吗?分享


可以使用XmlWriter将XML写入内存吗?

我正在创建一个返回XML的ASHX,但是当我这样做时它需要一条路径

XmlWriter writer = XmlWriter.Create(returnXML, settings) 

但是returnXML现在只是一个空字符串(猜测它不起作用),但是我需要将XML编写成我可以作为响应文本发送的东西。 我尝试了XmlDocument,但它给了我一个错误,期待一个字符串。 我在这里想念的是什么?

如果你真的想写入内存,请传入StringWriterStringBuilder如下所示:

 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.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1252543.html

(0)
上一篇 2022年11月15日 下午2:15
下一篇 2022年11月15日 下午2:19

精彩推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注