解析程序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后,
feed
已经是当前节点,因此rssFeed.Descendants("feed")
找不到任何 -
元素有一个名称空间(
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(); }