2009-04-15 20 views

cevap

27

XDocument.WriteTo yöntemine bir göz atın; örneğin:

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

ve önceki, bir MemoryStream dayanan bir XmlWriter oluşturmak gerekir ve:

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'te
+5

Veya .Save - ancak örnek tutar; -p –

+2

@Marc WriteTo() ve Save() arasındaki fark nedir? –

+4

@Daniel Fortunov: .Save daha fazla aşırı yüklenme sağlar, ancak bunların tümü arama sona erer .WriteTo – dtb

24

ve daha sonra, bir MemoryStream için kaydedin edebilirsiniz dtb's answer'da gösterildiği gibi kaydedin.

+0

Her iki yaklaşımın da \ r \ n ve whitespace eklediğini merak ediyorum. Burada kolay bir seçeneğe sahip olmak harika olurdu (mevcut XmlWriter'i aşırı yüklemek yerine) – 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); 
}