为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
一只名叫tom的猫 2019-10-08 15:13:11
我正在通过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}现在,我进行了搜索,找到的最佳解决方案是在序列化内容时向序列化器添加空白名称空间,但是我没有序列化它,所以我不能。我也有一些用于接收状态的代码,效果很好。那么有人可以向我解释为什么会发生错误吗?以及可能的解决方案?提前致谢。
查看完整描述

4 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

甚至更容易的是将以下注释添加到类的顶部:


[Serializable, XmlRoot("user")]

public partial class User

{

}


查看完整回答
反对 回复 2019-10-08
?
12345678_0001

TA贡献1802条经验 获得超5个赞

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


查看完整回答
反对 回复 2019-10-08
?
aluckdog

TA贡献1847条经验 获得超7个赞

错误消息非常模糊,对我来说,我有以下代码:


var streamReader = new StreamReader(response.GetResponseStream());

var xmlSerializer = new XmlSerializer(typeof(aResponse));

theResponse = (bResponse) xmlSerializer.Deserialize(streamReader);

注意,xmlSerializer是使用aResponse实例化的,但是在反序列化时,我不小心将其强制转换为bResonse。


查看完整回答
反对 回复 2019-10-08
  • 4 回答
  • 0 关注
  • 319 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信