解析程序XML Windows Phone C#

本文关键字:Phone Windows XML 程序 | 更新日期: 2023-09-27 18:26:22

我试图在C#中解析windows phone web的xml,但未能找到获取数据的结果,问题在于我如何询问

var rssFeed = XElement.Parse(response);
var channel = rssFeed.Descendants("feed");
var items = (from item in channel.Elements("entry") select new ItemsLoad

我找不到一种方法来获得结果,有什么想法吗?救命!

public class ItemsLoad
{
    public string Title { get; set; }
    public string Link { get; set; }
    public string Description { get; set; }
    public string PubDate { get; set; }
    public static List<ItemsLoad> GetElements(string response)
    {
        var rssFeed = XElement.Parse(response);
        var channel = rssFeed.Descendants("feed");
        var items = (from item in channel.Elements("entry")
            select new ItemsLoad
            {
                Title = item.Element("title").Value,
                Link = item.Element("link").Value,
                Description = item.Element("summary").Value,
                PubDate = item.Element("published").Value
            });
    return items.ToList();
}

我的完整代码

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xmlns:media="http://search.yahoo.com/mrss/"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:dcterms="http://purl.org/dc/terms/">
   <id>index.xml</id>
   <title>Last</title>
   <updated>2014-10-13T06:17:44+00:00</updated>
   <author>
      <name>John</name>
      <email>John dot com</email>
      <uri>this-is-test.com</uri>
   </author>
   <entry>
      <id>213213</id>
      <published>2014-09-17T10:45:36+00:00</published>
      <title xml:lang="en">Test</title>
      <summary xml:lang="en">Test xml windows phone</summary>
      <link rel="alternate"
            type="text/html"
            href="http://www"
            title="story">
         <media:content>
            <media:thumbnail url="tese.jpg"
                             width="106"
                             height="60">
               <img alt="test"
                    width="106"
                    height="60"
                    src="test.jpg"/>
            </media:thumbnail>
            <media:thumbnail url="test.jpg"
                             width="144"
                             height="81">
               <img alt="test"
                    width="144"
                    height="81"
                    src="test.jpg"/>
            </media:thumbnail>
         </media:content>
      </link>
   </entry>
</feed>

这是xml文件

感谢

解析程序XML Windows Phone C#

您的代码有两个问题:

  1. 解析XML后,feed已经是当前节点,因此rssFeed.Descendants("feed")找不到任何

  2. 元素有一个名称空间(feed上的xmlns="..."),您需要在解析节点时提供它:

    public static List<ItemsLoad> GetElements(string response)
    {
        const string Namespace = "http://www.w3.org/2005/Atom";
        var rssFeed = XElement.Parse(response);
        var items = (from item in rssFeed.Elements(XName.Get("entry", Namespace))
            select new ItemsLoad
            {
                Title = item.Element(XName.Get("title", Namespace)).Value,
                Link = item.Element(XName.Get("link", Namespace)).Value,
                Description = item.Element(XName.Get("summary", Namespace)).Value,
                PubDate = item.Element(XName.Get("published", Namespace)).Value
            });
        return items.ToList();
    }