无法使用Linq解析xml查询

时间:2011-05-12 14:04:19

标签: windows-phone-7 linq-to-xml twitter

我正在为Windows Phone 7开发一个示例Twitter应用程序。在我的代码中显示用户的一些细节,使用了以下代码。

    void ShowProfile()
    {
        WebClient client = new WebClient();
        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Profile_DownloadCompleted);
        client.DownloadStringAsync(new Uri("http://api.twitter.com/1/users/show.xml?user_id=" + this.id));
    }

    void Profile_DownloadCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        if (e.Error != null)
        { return; }
        if (e.Result == null) MessageBox.Show("NUlllllllllll");
        XElement Profile = XElement.Parse(e.Result);

    var ProfileDetails = (from profile in Profile.Descendants("user")
                             select  new UserProfile
                             {
                                 UserName = profile.Element("screen_name").Value,
                                 ImageSource = profile.Element("profile_image_url").Value,
                                 Location = profile.Element("location").Value,
                                 TweetsCount = profile.Element("statuses_count").Value,
                             }).FirstOrDefault();

        LayoutRoot.DataContext = ProfileDetails;
 }

这里,LayoutRoot是网格名称。但数据绑定不起作用。 事实上,当保持一个Break点时,ProfileDetails对象中似乎没有数据。但我可以观察到e.Result包含XML格式的所需数据。 任何身体可以找出我错的地方吗? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

您已使用XElement.Parse,因此Profile代表API请求返回的单根<user>。然后,您正在尝试在其中查找user元素,这当然没有意义。

请尝试使用XDocument.Parse。当该列表只能包含1个条目时,为数据上下文分配IEnumerable<UserProfile>是否真的有意义?