2011-10-11 9 views
6

Sto chiamando un servizio di terze parti e inviano la risposta come Xml. Tuttavia, poiché sto utilizzando WebClient per chiamare il servizio, la risposta che ottengo è un array di byte.Come si converte la risposta dei Byte Array da WebClient a Xml?

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

risultato è una matrice di byte. Come posso convertirlo in XML per leggere la risposta fornita dal servizio di terze parti?

risposta

7

Utilizzare un MemoryStream:

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

Basta aggiungendo che XDocument qui non è dallo spazio dei nomi System.Xml.Linq http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx ma un normale documento Xml che c uno può essere caricato dal flusso di memoria come mostrato qui http://blogs.msdn.com/b/tolong/archive/2007/11/15/read-write-xml-in-memory-stream.aspx – shashi

8

È possibile attivare i byte in una stringa:

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

e poi analizzarlo:

XDocument doc = XDocument.Parse(xml); 
Problemi correlati