代码之家  ›  专栏  ›  技术社区  ›  Jeff

关于XMLTextWriter和Streams的问题

  •  1
  • Jeff  · 技术社区  · 16 年前

    我们有一个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输入其中……但为什么它会首先读取整个字符串?这不是效率低下吗?

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

    3 回复  |  直到 16 年前
        1
  •  1
  •   Duncan Smart    16 年前

    是的,直接给回复写就行了 Output (IO.StreamWriter)或 OutputStream

    XmlTextWriter XML_Writer = new XmlTextWriter(HttpContext.Current.Response.OutputStream, HttpContext.Current.Response.Encoding);
    //...
    XML_Writer.Flush();
    
        2
  •  0
  •   Jeff    16 年前

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

        3
  •  0
  •   Boaz    16 年前

    您可以直接写入响应流:

    Response.Cache.SetCacheability(HttpCacheability.NoCache);

    XmlWriterSettings