我正在为一个我几乎一无所知的系统编写一个xml解析器。我正在寻找为xml流设置本地副本,直到我可以查看提供流的系统,以便我可以在此期间编写测试等。
我简要地说明了xml流是通过http接近的。这是无穷无尽的数据流,如果直接在webbrowser中接近,它最终会崩溃,因为操作系统将耗尽内存。
现在,我正在尝试使用虚假数据设置本地流服务器,但我无法弄清楚如何通过http使这样的流可以接近。从一开始就是正确的吗?
public static Stream Create()
{
var xmlDemo1 = TestResources.Strings.XmlResponseDataDemo(TestResources.Strings.XmlResponseDataDemoResource1);
var demoDataLengthBytes = BitConverter.GetBytes(xmlDemo1.Length);
var demoDataBytes = Encoding.UTF8.GetBytes(xmlDemo1);
Func<byte[]> getBytes = () =>
{
var ret1 = new byte[demoDataLengthBytes.Length + demoDataBytes.Length];
Buffer.BlockCopy(demoDataLengthBytes, 0, ret1, 0, demoDataLengthBytes.Length);
Buffer.BlockCopy(demoDataBytes, 0, ret1, demoDataLengthBytes.Length, demoDataBytes.Length);
return ret1;
};
var ret = new MemoryStream();
Task.Factory.StartNew(() =>
{
while (true)
{
var buffer = getBytes();
ret.Write(buffer, 0, buffer.Length);
}
});
return ret;
}
我将长度预先设置为发送的字节长度,这可能根本不需要,但是直到稍后我都无法想出那个。