SyndicationFeed: Как получить доступ к контенту: закодирован?

В приложении Магазина Windows 8 я читаю некоторые данные Xml, используя SyndicationFeed. Некоторые элементы RSS-каналов содержат, например, элементы content:encoded (xmlns: content = '...'). Я думаю, что нет способа получить содержимое этих элементов через SyndicationItem ?!

Вот почему я пытаюсь внутри своего foreach(SyndicationItem item in feeditems) что-то вроде этого:

item.GetXmlDocument(feed.SourceFormat).SelectSingleNode("/item/*:encoded]").InnerText;

Но это не работает. И я уверен, как использовать NamespaceManager и т. Д. В winrt. На данный момент я обращаюсь к контенту: закодирован с помощью метода NextSibling другого элемента, но это не совсем чистый способ.

Итак, как мне лучше всего получить доступ к содержимому элемента?

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="URI">
<channel>

 <.../>

 <item>
  <title>Example entry</title>
  <description>Here is some text containing an interesting description.</description>
  <link>http://www.wikipedia.org/</link>
  <content:encoded>Content I try to access</content:encoded>
 </item>

</channel>
</rss> 

person Thrukal    schedule 18.05.2013    source источник
comment
Извините, я добавил образец xml. По сути, это обычный RSS-канал, за исключением того, что элементы содержат элементы, которые находятся в пространствах имен.   -  person Thrukal    schedule 19.05.2013
comment
Ответ, который вы ищете, находится здесь   -  person Kobynet    schedule 30.09.2014


Ответы (2)


Просто используйте XNamespace

XNamespace content = "URI";

var items = XDocument.Parse(xml)
                .Descendants("item")
                .Select(i => new
                {
                    Title = (string)i.Element("title"),
                    Description = (string)i.Element("description"),
                    Link = (string)i.Element("link"),
                    Encoded = (string)i.Element(content + "encoded"), //<-- ***

                })
                .ToList();
person I4V    schedule 19.05.2013
comment
Спасибо за ваш ответ. Я отмечу это как ответ, хотя он не очень хорошо сочетается с моим контекстом SyndicationFeed. Кроме того, я только что обнаружил, что item.Summary.Text SyndicationItem содержит элемент content: encoded ... - person Thrukal; 19.05.2013

попробуй это

var items = XDocument.Parse(xml)
                .Descendants("item")
                .Select(i => new
                {
                    Title = (string)i.Element("title"),
                    Description = (string)i.Element("description"),
                    Link = (string)i.Element("link"),
                    Encoded = (string)i.Element("{http://purl.org/dc/elements/1.0/modules/content/}encoded"), //<-- ***

                })
                .ToList();

or

var items = XDocument.Parse(xml)
                .Descendants("item")
                .Select(i => new
                {
                    Title = (string)i.Element("title"),
                    Description = (string)i.Element("description"),
                    Link = (string)i.Element("link"),
                    Encoded = (string)i.Element("{http://purl.org/rss/1.0/modules/content/}encoded"), //<-- ***

                })
                .ToList();
person Rolwin Crasta    schedule 01.09.2015