Tôi đã làm điều này trước đây, không phải với XML, nhưng với dữ liệu cần được phân tích cú pháp để thay đổi trạng thái cho một ứng dụng. Phương thức HttpWebResponse.GetResponseStream() đã làm việc tốt cho việc này. Đảm bảo gọi Close() trên luồng này khi bạn hoàn tất. Tôi đề nghị một khối cuối cùng.
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();
}
Hoặc cách khác:
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();
}
Tôi nghĩ rằng có một số chỉnh sửa nhỏ cần thiết để làm cho mã hoạt động. Không có phương thức 'HttpWebRequest.GetResponseStream()'. Bạn cần nhận một đối tượng 'HttpWebResponse' bằng cách sử dụng' HttpWebRequest.GetResponse() 'và gọi' GetResponseStream() 'trên đó. Cũng trong khối 'cuối cùng'' req' không được sử dụng nhưng câu trả lời được đề cập ở trên là 'Response'. – scherand
đồng ý, tôi chỉ cần gõ nó ra khỏi bộ nhớ, không phải từ một dự án thực tế. – esac
Làm cách nào để làm việc với XML? XML sẽ không hợp lệ cho đến khi toàn bộ tài liệu xml được tải xuống, loại đánh bại mục đích phát trực tuyến. – swestner