Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 关于XMLTextWriter和Streams的问题_Asp.net_Stream_Xmltextwriter - Fatal编程技术网

Asp.net 关于XMLTextWriter和Streams的问题

Asp.net 关于XMLTextWriter和Streams的问题,asp.net,stream,xmltextwriter,Asp.net,Stream,Xmltextwriter,我们有一个VXML项目,由第三方解析,为我们提供一个电话导航系统。我们要求他们输入一个id代码来留言,稍后我们公司会对其进行审核 我们目前的工作如下: Response.Cache.SetCacheability(HttpCacheability.NoCache); Stream m = new MemoryStream(); //Create Memory Stream - Used to create XML document in Memory XmlTextWriter XML_Writ

我们有一个VXML项目,由第三方解析,为我们提供一个电话导航系统。我们要求他们输入一个id代码来留言,稍后我们公司会对其进行审核

我们目前的工作如下:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Stream m = new MemoryStream(); //Create Memory Stream - Used to create XML document in Memory
XmlTextWriter XML_Writer = new XmlTextWriter(m, System.Text.Encoding.UTF8);
XML_Writer.Formatting = Formatting.Indented;
XML_Writer.WriteStartDocument();
/* snip - writing a valid XML document */
XML_Writer.WriteEndDocument();
XML_Writer.Flush();
m.Position = 0;
byte[] b = new byte[m.Length];
m.Read(b, 0, (int)m.Length);
XML_Writer.Close();
HttpContext.Current.Response.Write(System.Text.Encoding.UTF8.GetString(b, 0, b.Length));
我只是在维护这个应用程序,不是我写的…但结尾部分对我来说似乎很复杂

我知道它会获取输出流并将写入的XML输入其中……但为什么它会首先读取整个字符串?这不是效率低下吗


是否有更好的方法来编写上述代码?

是的,只需直接写入响应
输出
(IO.StreamWriter)或
输出流
(IO.Stream):


是的,只需直接写入响应
输出
(IO.StreamWriter)或
输出流
(IO.Stream):


然后我就可以调用XML_Writer.Flush(),对吗?这将把XML刷新到流中?

之后,我可以调用XML\u Writer.flush(),对吗?这将把XML刷新到流中?

您可以直接写入响应流:


Response.Cache.SetCacheability(HttpCacheability.NoCache)

XmlWriter XML_Writer=XmlWriter.Create(HttpContext.Current.Response.Output);


要向writer添加设置,最好使用较新的类。将其作为参数提供给XmlWriter.Create函数。

您可以直接写入响应流:


Response.Cache.SetCacheability(HttpCacheability.NoCache)

XmlWriter XML_Writer=XmlWriter.Create(HttpContext.Current.Response.Output);


要向writer添加设置,最好使用较新的类。将其作为XmlWriter.Create函数的参数。

这仅适用于XmlWriter类,而不是我正在使用的XmlTextWriter…更改会有什么损失?XmlTextWriter继承自XmlWriter类。原则上,输出载体(文本/流等)与写入部分分离。Create是在.NET2.0中引入的,是制作XML编写器的“首选方法”。请参阅XmlWriter.Create的msdn文档中的备注部分。这仅适用于XmlWriter类,而不适用于我正在使用的XmlTextWriter…更改会带来什么损失?XmlTextWriter继承自XmlWriter类。原则上,输出载体(文本/流等)与写入部分分离。Create是在.NET2.0中引入的,是制作XML编写器的“首选方法”。请参阅XmlWriter.Create的msdn文档中的备注部分。
XmlTextWriter XML_Writer = new XmlTextWriter(HttpContext.Current.Response.OutputStream, HttpContext.Current.Response.Encoding);
//...
XML_Writer.Flush();