【问题标题】:How can I convert a byte[] response to a valid XDocument?如何将 byte[] 响应转换为有效的 XDocument?
【发布时间】:2010-08-10 15:27:43
【问题描述】:
<?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));    

【问题讨论】:

    标签: c# .net webclient linq-to-xml httpwebresponse


    【解决方案1】:
    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
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      相关资源
      最近更新 更多