无法使用 Linq 解析 xml 查询

发布于 2024-11-06 19:04:01 字数 1390 浏览 0 评论 0原文

我正在为 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 是网格名称。但数据绑定不起作用。 事实上,当保留断点时,ProfileDetails 对象中似乎没有数据。但我可以观察到 e.Result 包含 XML 格式的所需数据。 任何人都可以弄清楚我哪里出了问题吗? 提前致谢。

I am developing a sample Twitter app for Windows phone 7. In my code to display some details of user, used the following code.

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

Here, LayoutRoot is the Grid name. But the data binding doesn't work.
Infact, when kept a Break point it seems there is no data in the ProfileDetails object. But I could observe that e.Result contains the required data in the XML format.
Can any body figureout where I am going wrong??
Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半夏半凉 2024-11-13 19:04:01

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

请尝试使用 XDocument.Parse 来代替。当该列表只能包含 1 个条目时,将 IEnumerable 分配给数据上下文真的有意义吗?

You have used XElement.Parse so Profile represents the single root <user> that API request would have returned. You are then trying to look for user elements inside it which of course makes no sense.

Try XDocument.Parse instead. Also does it really make any sense assigning a IEnumerable<UserProfile> to the data context when that list can only ever contain 1 entry?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文