【发布时间】:2015-02-05 22:30:03
【问题描述】:
var stream = response.GetResponseStream();
var outStream = body.GetStream();
XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.IgnoreWhitespace = false;
var reader = XmlReader.Create(stream, readerSettings);
Func<XML,XML?> updateCallback = (xml) => {
//Read xml, maybe update it and return new element.
}
鉴于上述情况,我目前只是await stream.copyToAsync(outstream)
我想创建一个解决方案,在下面的 xml 中的每个电影元素上调用 updateCallback,并将回调中所做的任何更改写出到 outstream。
它应该将 xml 文件镜像到 update 函数什么都不做的地方,并在它输出新值时注入新的 xml。 xml 文件是无限长的,不能在内存中。如何才能做到这一点? c#/.net 输入和输出都是分块的网络流,所以它只需要尽可能快地推送它。
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Movies>
<Movie>
<... attributes ...>
</Movie>
<Movie>
<... attributes ...>
</Movie>
</Movies>
</Root>
【问题讨论】: