{“ <user xmlns =''>不是预期的。}反序列化Twitter XML

我正在通过OAuth从Twitter提取XML。


我正在向http://twitter.com/account/verify_credentials.xml发送请求,该请求返回以下XML:


<?xml version="1.0" encoding="UTF-8"?>

<user>

  <id>16434938</id>

  <name>Lloyd Sparkes</name>

  <screen_name>lloydsparkes</screen_name>

  <location>Hockley, Essex, UK</location>

  <description>Student</description>

  <profile_image_url>http://a3.twimg.com/profile_images/351849613/twitterProfilePhoto_normal.jpg</profile_image_url>

  <url>http://www.lloydsparkes.co.uk</url>

  <protected>false</protected>

  <followers_count>115</followers_count>

  <profile_background_color>9fdaf4</profile_background_color>

  <profile_text_color>000000</profile_text_color>

  <profile_link_color>220f7b</profile_link_color>

  <profile_sidebar_fill_color>FFF7CC</profile_sidebar_fill_color>

  <profile_sidebar_border_color>F2E195</profile_sidebar_border_color>

  <friends_count>87</friends_count>

  <created_at>Wed Sep 24 14:26:09 +0000 2008</created_at>

  <favourites_count>0</favourites_count>

  <utc_offset>0</utc_offset>

  <time_zone>London</time_zone>

  <profile_background_image_url>http://s.twimg.com/a/1255366924/images/themes/theme12/bg.gif</profile_background_image_url>

  <profile_background_tile>false</profile_background_tile>

我正在使用以下代码反序列化:


    public User VerifyCredentials()

    {

        string url = "http://twitter.com/account/verify_credentials.xml";

        string xml = _oauth.oAuthWebRequestAsString(oAuthTwitter.Method.GET, url, null);


        XmlSerializer xs = new XmlSerializer(typeof(User),"");


        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml));


        return (User)xs.Deserialize(ms);

    }

但是,当反序列化以上XML时,应用程序将引发以下情况:


$ exception {“ XML文档(2,2)中存在错误。”} System.Exception {System.InvalidOperationException}


InnerException {“ <用户xmlns =”>不是预期的。“} System.Exception {System.InvalidOperationException}


现在,我进行了搜索,找到的最佳解决方案是在序列化内容时向序列化器添加空白名称空间,但是我没有序列化它,所以我不能。


我也有一些用于接收状态的代码,效果很好。


那么有人可以向我解释为什么会发生错误吗?以及可能的解决方案?


提前致谢。


一只名叫tom的猫
浏览 334回答 4
4回答

慕姐4208626

甚至更容易的是将以下注释添加到类的顶部:[Serializable, XmlRoot("user")]public partial class User{}

12345678_0001

XmlSerializer xs = new XmlSerializer(typeof(User), new XmlRootAttribute("yourRootName"));&nbsp;

aluckdog

错误消息非常模糊,对我来说,我有以下代码:var streamReader = new StreamReader(response.GetResponseStream());var xmlSerializer = new XmlSerializer(typeof(aResponse));theResponse = (bResponse) xmlSerializer.Deserialize(streamReader);注意,xmlSerializer是使用aResponse实例化的,但是在反序列化时,我不小心将其强制转换为bResonse。
打开App,查看更多内容
随时随地看视频慕课网APP