如何将byte []响应转换为有效的XDocument?

Ser*_*pia 6 .net c# webclient linq-to-xml httpwebresponse

<?xml version="1.0" encoding="utf-8"?>
<rsp stat="ok">
        <image_hash>cxmHM</image_hash>
        <delete_hash>NNy6VNpiAA</delete_hash>
        <original_image>http://imgur.com/cxmHM.png</original_image>
        <large_thumbnail>http://imgur.com/cxmHMl.png</large_thumbnail>
        <small_thumbnail>http://imgur.com/cxmHMl.png</small_thumbnail>
        <imgur_page>http://imgur.com/cxmHM</imgur_page>
        <delete_page>http://imgur.com/delete/NNy6VNpiAA</delete_page>
</rsp>
Run Code Online (Sandbox Code Playgroud)

这是我将收到的典型回复.我尝试了以下但是我收到一个错误,告诉我非空白字符不能添加到内容.

XDocument response = new XDocument(w.UploadValues("http://imgur.com/api/upload.xml", values));    
Run Code Online (Sandbox Code Playgroud)

Hen*_*man 10

byte[] responseData = w.UploadValues("http://imgur.com/api/upload.xml", values);
string responseText = Encoding.ASCII.GetString(responseData);  //  ASCII assumed
XDocument respnseXml = XDocument.Parse(responseText); 
Run Code Online (Sandbox Code Playgroud)

但那个错误也可能来自于values.


小智 5

我的经验是最好在 MemoryStream 中加载字节并将其提供给 XDocument。这样您就不必修复任何空白问题。

byte[] responseData = w.UploadValues("http://imgur.com/api/upload.xml", values);
using(var ms = new MemoryStream(responseData)) 
{
var responseXml = XDocument.Load(ms);
}
Run Code Online (Sandbox Code Playgroud)