2008-09-30 4 views
1

우리는 제 3자가 우리에게 전화 네비게이션 시스템을 제공하기 위해 구문 분석하는 VXML 프로젝트를 가지고 있습니다. 우리는 메시지를 남기기 위해 ID 코드를 입력해야하며, 나중에 회사에서 검토합니다. 난 그냥이 응용 프로그램을 유지하고있어XMLTextWriters 및 스트림에 관한 질문

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을 가져 오는 것을 알고 있지만 왜 전체 문자열을 처음 읽는 것입니까? 비효율적이지 않습니까?

위의 코드를 작성하는 더 좋은 방법이 있습니까?

답변

1

예, 바로 응답 Output (IO.StreamWriter) 또는 OutputStream (IO.Stream)에 직접 쓰기 : 그 내가 바로, XML_Writer.Flush()를 호출 할 수 있습니다 후

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

를? XML을 스트림으로 플러시 할 것인가?

+0

예 그래야합니까 –

0

당신은 응답 스트림에 직접 작성할 수 있습니다

Response.Cache.SetCacheability(HttpCacheability.NoCache);

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

당신이 새로운 XmlWriterSettings 클래스를 사용하는 것이 더 낫다 작가에 설정을 추가하려면. XmlWriter.Create 함수에 매개 변수로 제공하십시오.

+0

이것은 XmlWriter 클래스에서만 작동하며 XmlTextWriter에서는 사용하지 않습니다 ... 변경하면 어떻게 되나요? – Jeff

+0

XmlTextWriter는 XmlWriter 클래스에서 상속됩니다. 원칙적으로 출력 차량 (텍스트/스트림 등)은 쓰기 부분에서 분리됩니다. XmlWriter.Create는 .NET 2.0에 도입되었으며 XML 작성자를 만드는 "선호되는 방법"입니다. XmlWriter.Create의 msdn 문서에있는 비고 섹션을 참조하십시오. – Boaz