1

我正在为一个我几乎一无所知的系统编写一个 xml 解析器。我正在寻找为 xml 流设置本地副本,直到我可以查看提供流的系统,以便我可以同时编写测试等。

简要地向我展示了通过 http 访问 xml 流。这是无穷无尽的数据流,如果直接在网络浏览器中访问,它最终会崩溃,因为操作系统将耗尽内存。

现在,我正在尝试使用假数据设置本地流服务器,但我不知道如何通过 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;
}

我在发送的字节前面加上长度,这可能根本没有必要,但直到以后我才能弄清楚那个。

4

0 回答 0