Read inner attribute/tags in RSS Items like (media:content) in windows phone 8
-
18-10-2022 - |
문제
I recently had a problem with xml parsing in my Windows Phone 8 application, I can read all tags in the XML feed like title, description, etc. straight away. But I'm not able to get the inner attribute from tags which is contains a ":" symbol for example: <media:content ... />
or <media:text ../>
etc.
Here is the XML feed from Yahoo: http://cricket.yahoo.com/news/rss/.
Every item is like this:
<item>
<title>Asia Cup: India vs Sri Lanka</title>
<description>
<p><a href="http://cricket.yahoo.com/prematch-india-vs-sri-lanka_188453"><img src="http://l3.yimg.com/bt/api/res/1.2/2rY73ROpgTT4wBxyQqSjwA--/YXBwaWQ9eW5ld3M7Zmk9ZmlsbDtoPTg2O3B4b2ZmPTUwO3B5b2ZmPTA7cT03NTt3PTEzMA--/http://media.zenfs.com/en_us/News/ap_webfeeds/112af677510d1a084d0f6a706700f2a0.jpg" width="130" height="86" alt="India’s Shikhar Dhawan plays a shot during the Asia Cup one-day international cricket tournament against Sri Lanka in Fatullah, near Dhaka, Bangladesh, Friday, Feb. 28, 2014. (AP Photo/A.M. Ahad)" align="left" title="India’s Shikhar Dhawan plays a shot during the Asia Cup one-day international cricket tournament against Sri Lanka in Fatullah, near Dhaka, Bangladesh, Friday, Feb. 28, 2014. (AP Photo/A.M. Ahad)" border="0" /></a>Fatullah - India lose quick wicket after Dhawan's dismissal for 94.</p><br clear="all"/>
</description>
<link>
http://cricket.yahoo.com/prematch-india-vs-sri-lanka_188453
</link>
<pubDate>Fri, 28 Feb 2014 13:08:29 +0530</pubDate>
<guid isPermaLink="false">prematch-india-vs-sri-lanka_188453</guid>
<media:content url="http://l3.yimg.com/bt/api/res/1.2/2rY73ROpgTT4wBxyQqSjwA--/YXBwaWQ9eW5ld3M7Zmk9ZmlsbDtoPTg2O3B4b2ZmPTUwO3B5b2ZmPTA7cT03NTt3PTEzMA--/http://media.zenfs.com/en_us/News/ap_webfeeds/112af677510d1a084d0f6a706700f2a0.jpg" type="image/jpeg" width="130" height="86"/>
<media:text type="html">
<p><a href="http://cricket.yahoo.com/prematch-india-vs-sri-lanka_188453"><img src="http://l3.yimg.com/bt/api/res/1.2/2rY73ROpgTT4wBxyQqSjwA--/YXBwaWQ9eW5ld3M7Zmk9ZmlsbDtoPTg2O3B4b2ZmPTUwO3B5b2ZmPTA7cT03NTt3PTEzMA--/http://media.zenfs.com/en_us/News/ap_webfeeds/112af677510d1a084d0f6a706700f2a0.jpg" width="130" height="86" alt="India’s Shikhar Dhawan plays a shot during the Asia Cup one-day international cricket tournament against Sri Lanka in Fatullah, near Dhaka, Bangladesh, Friday, Feb. 28, 2014. (AP Photo/A.M. Ahad)" align="left" title="India’s Shikhar Dhawan plays a shot during the Asia Cup one-day international cricket tournament against Sri Lanka in Fatullah, near Dhaka, Bangladesh, Friday, Feb. 28, 2014. (AP Photo/A.M. Ahad)" border="0" /></a>Fatullah - India lose quick wicket after Dhawan's dismissal for 94.</p><br clear="all"/>
</media:text>
<media:credit role="publishing company"/>
</item>
And my code to parse and get data is:
try
{
XNamespace media = "http://cricket.yahoo.com/news/rss/";
XDocument xmlDoc = XDocument.Parse(e.Result);
var all = xmlDoc.Descendants("channel");
List<News1> _singleRsses = new List<News1>();
foreach (var item in all)
{
var itemVedio = item.Descendants("item");
foreach (var xElement in itemVedio)
{
string _title = xElement.Element("title").Value;
string _description = xElement.Element("description").Value;
string pubDate = DateTime.Parse(xElement.Element("pubDate").Value).ToString();
string link = xElement.Element("link").Value;
string _imageSource = xElement.Element(media+"content").Attribute("url").Value;
News1 _singleRss = new News1
{
Title = _title,
description = Regex.Replace(_description, "<.+?>", string.Empty),
PubDate = pubDate,
Link = link,
Image=_imageSource
};
_singleRsses.Add(_singleRss);
}
}
newsListbox.DataContext = _singleRsses;
}
catch (Exception exp)
{
MessageBox.Show("Exception: " + exp);
_progressIndicator.IsIndeterminate = false;
_progressIndicator.IsVisible = false;
}
public class News1
{
public string Title { get; set; }
public string Image { get; set; }
public string description { get; set; }
public string PubDate { get; set; }
public string Link { get; set; }
}
After some tutorials i used XNamespace too, but it won't work and I got this error:
Exception: system.nullReferenceException: Object reference not set to an instance of an object
올바른 솔루션이 없습니다
제휴하지 않습니다 StackOverflow