2009-04-15 100 views

回答

27

看看XDocument.WriteTo方法;例如:

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); 
    } 
} 
+5

或.Save - 但例子成立;-p – 2009-04-15 06:16:33

+2

@Marc WriteTo()和Save()之间有什么区别? – 2010-03-01 15:11:31

24

在.NET 4及更高版本,您可以将其保存到一个MemoryStream

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

在.NET 3.5和更早的版本,你需要创建一个基于MemoryStream一个XmlWriter和除此之外,如dtb's answer所示。

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