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

7
<?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>

这是我通常会收到的响应。我尝试了以下方法,但出现错误,告诉我不能将非空格字符添加到内容中。
XDocument response = new XDocument(w.UploadValues("http://imgur.com/api/upload.xml", values));    
2个回答

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

但是那个错误同样也可能来自于 values


如果您假定使用UTF-8,请使用Encoding.UTF8.GetString而不是Encoding.ASCII.GetString - Luke

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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接