XMLTextWriterとストリームに関する質問
-
03-07-2019 - |
質問
私たちには、サードパーティが解析して電話ナビゲーションシステムを提供する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をそのストリームに供給することはわかっていますが、なぜ最初に文字列全体を読み取るのですか?効率的ではないですか?
上記のコードを記述するより良い方法はありますか?
解決
はい、レスポンス Output
(IO.StreamWriter)または OutputStream
(IO.Stream)に直接書き込みます:
XmlTextWriter XML_Writer = new XmlTextWriter(HttpContext.Current.Response.OutputStream, HttpContext.Current.Response.Encoding);
//...
XML_Writer.Flush();
他のヒント
その後、XML_Writer.Flush()を呼び出すだけですよね? XMLをストリームにフラッシュしますか?
応答ストリームに直接書き込むことができます:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
XmlWriter XML_Writer = XmlWriter.Create(HttpContext.Current.Response.Output);
ライターに設定を追加するには、新しい XmlWriterSettings クラス。 XmlWriter.Create関数のパラメーターとして指定します。
所属していません StackOverflow