2009-04-15 2 views

답변

27

XDocument.WriteTo 메서드를 살펴보십시오. 예 :

.NET 3.5에서
Stream stream = new MemoryStream(); 
doc.Save(stream); 
// Rewind the stream ready to read from it elsewhere 
stream.Position = 0; 

및 이전 버전, 당신은 MemoryStream을 기반으로 XmlWriter을 만들어야과 :

using (MemoryStream ms = new MemoryStream()) 
{ 
    XmlWriterSettings xws = new XmlWriterSettings(); 
    xws.OmitXmlDeclaration = true; 
    xws.Indent = true; 

    using (XmlWriter xw = XmlWriter.Create(ms, xws)) 
    { 
     XDocument doc = new XDocument(
      new XElement("Child", 
       new XElement("GrandChild", "some content") 
      ) 
     ); 
     doc.WriteTo(xw); 
    } 
} 
.NET 4에서
+5

또는 예 : -p –

+2

@Marc WriteTo()와 Save()의 차이점은 무엇입니까? –

+4

@Daniel Fortunov : .Save는 더 많은 오버로드를 제공하지만 이들 모두가 결국 호출됩니다 .WriteTo – dtb

24

이후, 당신은 MemoryStream에 저장할 수 있습니다 dtb's answer과 같이 저장하십시오.

+0

둘 다 접근하여 \ r \ n과 공백을 추가 할 수 있을지 궁금합니다. 기존 XmlWriter를 오버로드하는 대신 여기에서 쉬운 옵션을 사용하는 것이 좋습니다. – beanmf

0
XDocument doc = new XDocument(
    new XElement(C_ROOT, 
     new XElement("Child"))); 
using (var stream = new MemoryStream()) 
{ 
    doc.Save(stream); 
    stream.Seek(0, SeekOrigin.Begin); 
} 
관련 문제