我正在通過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
{
}

12345678_0001
TA貢獻1802條經驗 獲得超5個贊
XmlSerializer xs = new XmlSerializer(typeof(User), new XmlRootAttribute("yourRootName"));

aluckdog
TA貢獻1847條經驗 獲得超7個贊
錯誤消息非常模糊,對我來說,我有以下代碼:
var streamReader = new StreamReader(response.GetResponseStream());
var xmlSerializer = new XmlSerializer(typeof(aResponse));
theResponse = (bResponse) xmlSerializer.Deserialize(streamReader);
注意,xmlSerializer是使用aResponse實例化的,但是在反序列化時,我不小心將其強制轉換為bResonse。
- 4 回答
- 0 關注
- 356 瀏覽
添加回答
舉報
0/150
提交
取消