Я сделал это раньше, а не с XML, но с данными, которые необходимо было проанализировать для изменений состояния для приложения. Метод HttpWebResponse.GetResponseStream() отлично справился с этим. Обязательно вызовите Close() в этом потоке, когда закончите. Я предлагаю, наконец, блок.
HttpWebRequest req;
try
{
req = (HttpWebRequest)WebRequest.Create("http://www.example.com");
Stream stream = req.GetResponseStream();
byte[] data = new byte[4096];
int read;
while ((read = data.Read(data, 0, data.Length)) > 0)
{
Process(data, read);
}
}
finally
{
if (req != null)
req.Close();
}
Или, наоборот:
HttpWebRequest req;
try
{
req = (HttpWebRequest)WebRequest.Create("http://www.example.com");
Stream stream = req.GetResponseStream();
XmlTextReader reader = new XmlTextReader(stream);
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name);
break;
case XmlNodeType.Text:
Console.Write(reader.Value);
break;
case XmlNodeType.CDATA:
Console.Write("<![CDATA[{0}]]>", reader.Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
Console.Write("<!--{0}-->", reader.Value);
break;
case XmlNodeType.XmlDeclaration:
Console.Write("<?xml version='1.0'?>");
break;
case XmlNodeType.Document:
break;
case XmlNodeType.DocumentType:
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference:
Console.Write(reader.Name);
break;
case XmlNodeType.EndElement:
Console.Write("</{0}>", reader.Name);
break;
}
}
}
finally
{
if (req != null)
req.Close();
}
Я думаю, что есть некоторые небольшие исправления, необходимые для работы кода. Нет метода 'HttpWebRequest.GetResponseStream()'. Вам нужно получить объект «HttpWebResponse» с помощью 'HttpWebRequest.GetResponse()' и называть 'GetResponseStream()' на этом. Также в блоке 'finally'' req' не будет использоваться, кроме вышеупомянутого 'Response'. – scherand
согласился, я просто напечатал его из памяти, а не из реального проекта. – esac
Как это работает с XML? XML недействителен до тех пор, пока не будет загружен весь xml-документ, какой тип проигрывает цель потоковой передачи. – swestner