Question

Nous avons un projet VXML analysé par une tierce partie pour nous fournir un système de navigation téléphonique. Nous leur demandons de saisir un code d'identification pour laisser un message, qui sera ensuite examiné par notre société.

Nous travaillons actuellement comme suit:

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));

Je ne fais que maintenir cette application, je ne l'ai pas écrite ... mais la section de fin me semble compliquée.

Je sais que cela prend le flux de sortie et alimente le code XML écrit ... mais pourquoi lit-il d'abord la chaîne entière? N'est-ce pas inefficace?

Existe-t-il un meilleur moyen d'écrire le code ci-dessus?

Était-ce utile?

La solution

Oui, il vous suffit d'écrire directement dans la réponse Sortie (IO.StreamWriter) ou OutputStream (IO.Stream):

XmlTextWriter XML_Writer = new XmlTextWriter(HttpContext.Current.Response.OutputStream, HttpContext.Current.Response.Encoding);
//...
XML_Writer.Flush();

Autres conseils

Après cela, je peux simplement appeler XML_Writer.Flush (), non? Cela va vider le XML dans le flux?

Vous pouvez écrire directement dans le flux de réponse:

Response.Cache.SetCacheability (HttpCacheability.NoCache);

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

Pour ajouter des paramètres au rédacteur, il vaut mieux utiliser le nouveau XmlWriterSettings . Donnez-le comme paramètre à la fonction XmlWriter.Create.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top