【发布时间】:2010-10-19 12:13:38
【问题描述】:
如何将 XDocument 中的 XML 转换为 MemoryStream,而不将任何内容保存到磁盘?
【问题讨论】:
标签: c# .net xml linq-to-xml
如何将 XDocument 中的 XML 转换为 MemoryStream,而不将任何内容保存到磁盘?
【问题讨论】:
标签: c# .net xml linq-to-xml
在 .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 所示。
【讨论】:
看看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);
}
}
【讨论】:
XDocument doc = new XDocument(
new XElement(C_ROOT,
new XElement("Child")));
using (var stream = new MemoryStream())
{
doc.Save(stream);
stream.Seek(0, SeekOrigin.Begin);
}
【讨论】: