【发布时间】:2016-03-11 07:27:55
【问题描述】:
是否可以将所有内容(xml 片段)从一个流(使用 xmlReader)复制到第二个流(xmlWriter)。
我有一些返回 xml 片段的程序。
<item></item>
<item></item>
<item></item>
<item></item>
<item></item>
using (XmlWriter writer = XmlWriter.Create(stream, _settings))
{
writer.WriteStartElement(typeName);
writer.WriteAttributeString("RowVersion", rowVersion);
for (int i = 1; i <= packagesCount; i++)
{
cmd.Parameters["@packageNumber"].Value = i;
using (var r = cmd.ExecuteXmlReader())
{
//need copy all fragment from reader
}
writer.WriteEndElement();
}
}
有类似 writer.WriteNode(reader,true) 的方法,但是使用它我需要迭代所有元素。当我在一个片段中有 10000 个元素时,它无效。我只需要复制所有内容。此外,这个片段可能非常大,这就是为什么我更喜欢使用流,而不是将其保存在字符串中
【问题讨论】:
-
你试过 XDocument 类吗? msdn.microsoft.com/en-us/library/…
-
当然我可以使用 XDocument - XDocument.Load(XmlReader) 和 XDocument.WriteTo(XmlWriter) 执行此操作,但使用此方法我需要将所有片段保存在 XDocment 实例中。
标签: c# xml stored-procedures xmlreader xmlwriter