{"<utilisateur xmlns="> n'était pas prévu.} La désérialisation XML Twitter

Je suis en tirant dans le fichier XML à partir de Twitter via OAuth.

Je suis en train de faire une demande de http://twitter.com/account/verify_credentials.xml, qui renvoie le code XML suivant:

<?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>
<statuses_count>1965</statuses_count>
<notifications>false</notifications>
<geo_enabled>false</geo_enabled>
<verified>false</verified>
<following>false</following>
<status>
<created_at>Mon Oct 12 19:23:47 +0000 2009</created_at>
<id>4815268670</id>
<text>&#187; @alexmuller your kidding? it should all be &quot;black tie&quot; dress code</text>
<source>&lt;a href=&quot;http://code.google.com/p/wittytwitter/&quot; rel=&quot;nofollow&quot;&gt;Witty&lt;/a&gt;</source>
<truncated>false</truncated>
<in_reply_to_status_id>4815131457</in_reply_to_status_id>
<in_reply_to_user_id>8645442</in_reply_to_user_id>
<favorited>false</favorited>
<in_reply_to_screen_name>alexmuller</in_reply_to_screen_name>
<geo/>
</status>
</user>

J'utilise le code suivant pour Désérialiser:

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

Et j'ai le texte suivant pour mon User classe:

 [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class User
{
[XmlElement(ElementName = "id")]       
public long Id { get; set; }
[XmlElement(ElementName = "name")] 
public string Name { get; set; }
[XmlElement(ElementName = "screen_name")]       
public string ScreenName { get; set; }
[XmlElement(ElementName = "location")]       
public string Location { get; set; }
[XmlElement(ElementName = "description")]      
public string Description { get; set; }
[XmlElement(ElementName = "profile_image_url")]      
public string ProfileImageUrl { get; set; }
[XmlElement(ElementName = "url")]       
public string Url { get; set; }
[XmlElement(ElementName = "protected")]      
public bool Protected { get; set; }
[XmlElement(ElementName = "followers_count")]      
public int FollowerCount { get; set; }
[XmlElement(ElementName = "profile_background_color")]       
public string ProfileBackgroundColor { get; set; }
[XmlElement(ElementName = "profile_text_color")]       
public string ProfileTextColor { get; set; }
[XmlElement(ElementName = "profile_link_color")]       
public string ProfileLinkColor { get; set; }
[XmlElement(ElementName = "profile_sidebar_fill_color")]       
public string ProfileSidebarFillColor { get; set; }
[XmlElement(ElementName = "profile_sidebar_border_color")]      
public string ProfileSidebarBorderColor { get; set; }
[XmlElement(ElementName = "friends_count")]     
public int FriendsCount { get; set; }
[XmlElement(ElementName = "created_at")]     
public string CreatedAt { get; set; }
[XmlElement(ElementName = "favourties_count")]      
public int FavouritesCount { get; set; }
[XmlElement(ElementName = "utc_offset")]      
public int UtcOffset { get; set; }
[XmlElement(ElementName = "time_zone")]       
public string Timezone { get; set; }
[XmlElement(ElementName = "profile_background_image_url")]        
public string ProfileBackgroundImageUrl { get; set; }
[XmlElement(ElementName = "profile_background_tile")]        
public bool ProfileBackgroundTile { get; set; }
[XmlElement(ElementName = "statuese_count")]        
public int StatusesCount { get; set; }
[XmlElement(ElementName = "notifications")]       
public string Notifications { get; set; }
[XmlElement(ElementName = "geo_enabled")]       
public bool GeoEnabled { get; set; }
[XmlElement(ElementName = "Verified")]        
public bool Verified { get; set; }
[XmlElement(ElementName = "following")]
public string Following { get; set; }
[XmlElement(ElementName = "status", IsNullable=true)]
public Status CurrentStatus { get; set; }
}

Mais quand il est au-dessus de la désérialisation du XML de la demande jette le suivant:

  • $exception {"Il y a une erreur dans le document XML (2, 2)."} Système.Exception {Système.InvalidOperationException}

  • InnerException {"<utilisateur xmlns="> n'était pas prévu."} Système.Exception {Système.InvalidOperationException}

Maintenant, j'ai cherché partout et la meilleure solution je trouve, c'est pour ajouter de la vierge des espaces de noms pour le sérialiseur lorsque vous sérialiser le contenu, mais je ne suis pas sérialisation donc je ne peux pas.

J'ai aussi un peu de code pour la réception des Statuts, ce qui fonctionne très bien.

Si quelqu'un peut m'expliquer pourquoi le message d'erreur qui se passe? Ainsi comme une solution possible?

Merci d'avance.

  • Dans mon cas, c'était à cause de fausse déclaration de XmlSerializer. Vérifiez donc que aussi.
InformationsquelleAutor lloydsparkes | 2009-10-12