C# 如何使用XmlWriter将System.Xml.Linq.XElement写入流

C# 如何使用XmlWriter将System.Xml.Linq.XElement写入流,c#,.net,xml,linq-to-xml,C#,.net,Xml,Linq To Xml,我有一个XElement实例,我希望使用XmlWriter类写入流。为什么?嗯,其中一个配置设置定义了是否使用二进制Xml。基于此设置,通过XmlWriter.Create(stream)或xmldirectionarywriter.CreateBinaryWriter(stream))创建合适的XmlWriter实例 无论如何,我正在尝试以下代码,但它使流为空: using (var stream = new MemoryStream()) { var xmlReader = new XD

我有一个
XElement
实例,我希望使用
XmlWriter
类写入流。为什么?嗯,其中一个配置设置定义了是否使用二进制Xml。基于此设置,通过
XmlWriter.Create(stream)
xmldirectionarywriter.CreateBinaryWriter(stream))创建合适的
XmlWriter
实例

无论如何,我正在尝试以下代码,但它使流为空:

using (var stream = new MemoryStream())
{
  var xmlReader = new XDocument(xml).CreateReader();
  xmlReader.MoveToContent();
  var xmlWriter = GetXmlWriter(stream);
  xmlWriter.WriteNode(xmlReader, true);
  return stream.ToArray();
}
我已经检查过,
xmlReader
在根XML元素的
MoveToContent
之后正确对齐

我一定是做错了什么,但是什么


谢谢。

您还没有展示GetXmlWriter的功能。。。但是你有没有试过让作家脸红

xmlWriter.Flush();
或者,使用
语句将
XmlWriter
包装到另一个
中:

using (var stream = new MemoryStream())
{
  var xmlReader = new XDocument(xml).CreateReader();
  xmlReader.MoveToContent();
  using (var xmlWriter = GetXmlWriter(stream))
  {
      xmlWriter.WriteNode(xmlReader, true);
  }
  return stream.ToArray();
}
您可能也希望对
XmlReader
执行同样的操作,尽管在这种特殊情况下,我不认为您特别需要这样做


说到这里,我完全不知道为什么要使用
XmlReader
。有什么原因不能找到相关的
XElement
并使用?或者,如果要复制整个文档,只需使用

即可。我没有让作家脸红。谢谢。顺便说一句,谢谢你的评论,我会相应地更改我的实现。