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
并使用?或者,如果要复制整个文档,只需使用即可。我没有让作家脸红。谢谢。顺便说一句,谢谢你的评论,我会相应地更改我的实现。