문제

우리는 제 3자가 전화 내비게이션 시스템을 제공하는 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 function의 매개 변수로 제공하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top