gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 01:49:54 27 4
gpt4 key购买 nike

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

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

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 语句中:

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 并使用 XElement.WriteTo(XmlWriter) ?或者,如果您要复制整个文档,只需使用 XDocument.WriteTo(XmlWriter)

关于c# - 如何使用 XmlWriter 将 System.Xml.Linq.XElement 写入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1865529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com