c# - SyndicationFeed: cómo acceder al contenido: ¿está codificado?
windows-8 windows-runtime (2)
En una aplicación de Windows 8 Store, estoy leyendo algunos datos Xml usando SyndicationFeed
. Algunos elementos de las fuentes RSS contienen, por ejemplo, content:encoded
(xmlns: content = ''...''). ¡Creo que no hay forma de obtener el contenido de estos elementos a través del SyndicationItem ?!
Es por eso que intento dentro de mi foreach(SyndicationItem item in feeditems)
algo como esto:
item.GetXmlDocument(feed.SourceFormat).SelectSingleNode("/item/*:encoded]").InnerText;
Pero esto no funciona. Y estoy seguro de cómo usar NamespaceManager
etc. en winrt. Por ahora estoy accediendo al contenido: codificado mediante el método NextSibling
de otro elemento, pero esa no es una manera realmente limpia.
Entonces, ¿cómo puedo acceder al contenido del elemento mejor?
<?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>
Solo usa 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();
prueba esto
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();
o
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();