2011-10-11 33 views
6

Tôi đang gọi dịch vụ của bên thứ ba và họ gửi phản hồi dưới dạng Xml. Tuy nhiên, khi tôi đang sử dụng WebClient để gọi dịch vụ, đáp ứng tôi nhận được là một mảng byte.Làm cách nào để chuyển đổi phản hồi Byte Array từ WebClient thành Xml?

var client = new WebClient(); 
var result = client.UploadValues(post_url, data); 

kết quả là một mảng byte. Làm cách nào để chuyển đổi nó thành XML để đọc phản hồi do dịch vụ bên thứ ba cung cấp?

Trả lời

7

Sử dụng một MemoryStream:

using (var stream = new MemoryStream(result)) 
{ 
    var doc = XDocument.Load(stream); 
    ... 
} 
+0

Chỉ cần nói thêm rằng XDocument trên đây không phải là từ System.Xml.Linq namespace http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx nhưng một tài liệu Xml bình thường mà c được tải vào từ luồng bộ nhớ như được hiển thị ở đây http://blogs.msdn.com/b/tolong/archive/2007/11/15/read-write-xml-in-memory-stream.aspx – shashi

8

Bạn có thể bật các byte vào một chuỗi:

string xml = Encoding.UTF8.GetString(result); 

và sau đó phân tích nó:

XDocument doc = XDocument.Parse(xml); 
Các vấn đề liên quan