C# 扩展rss源并从SyndicationFeed for Win8应用程序读取项目
我已经使用自定义字段项扩展了RSS提要,例如,使用图像url(http://linktoimage 我正在阅读RSS提要,其中包括:C# 扩展rss源并从SyndicationFeed for Win8应用程序读取项目,c#,windows-8,rss,syndicationfeed,C#,Windows 8,Rss,Syndicationfeed,我已经使用自定义字段项扩展了RSS提要,例如,使用图像url(http://linktoimage 我正在阅读RSS提要,其中包括: SyndicationFeed feed = await client.RetrieveFeedAsync(new Uri(feedUrl)); 但是为了阅读新元素,我需要用这些项目扩展SyndicationFeed(它需要一手默认的RSS项目)。我找不到最近的示例来说明如何执行此操作。大多数可用代码无法应用于Win8应用程序。我找到的最接近的代码是:
SyndicationFeed feed = await client.RetrieveFeedAsync(new Uri(feedUrl));
但是为了阅读新元素,我需要用这些项目扩展SyndicationFeed(它需要一手默认的RSS项目)。我找不到最近的示例来说明如何执行此操作。大多数可用代码无法应用于Win8应用程序。我找到的最接近的代码是:
i.ElementExtensions.First(element => element.NodeName == "imgurl").NodeValue);
但这导致了一个异常错误。当查看元素的值时,它向我显示的是已发布的标记而不是值。我希望它找到第一个imgurl标记并返回它的值。就像在我找到代码的代码中一样
()
在使用“SyndicationFeed”时,如何读取已添加到提要(作为字符串)中的xml标记?最好的方法是使用LINQ。例如,读取WordPress RSS(请注意这些命令):
通过这种方式,您可以获得所需的所有属性或标记,甚至可以将函数分配给它们,例如,传递标记并仅返回图像源。感谢您的回复。我更愿意向Syndication提要添加额外元素,而不是重写代码。当我阅读Microsoft手册时,这应该是可能的,但是它只是不起作用。
XmlDocument xDoc = await XmlDocument.LoadFromUriAsync(new Uri(blog.URL)); //URL you're trying to read
StringReader stringReader= new StringReader(xDoc.GetXml());
XmlReader xmlReader = XmlReader.Create(stringReader);
XDocument loadedPosts = XDocument.Load(xmlReader); //this can be done simpler using HttpClient.GetStringAsync
XNamespace dc = "http://purl.org/dc/elements/1.1/";
XNamespace content = XNamespace.Get("http://purl.org/rss/1.0/modules/content/"); //declare namespaces for dc:content
var data = from query in loadedPosts.Descendants("item") //gets all the "item" tags
select new Post //class you must create
{
NombreBlog = (string)query.Parent.Element("title"), //then you simply change 'Element("title")' with 'Element("propertyYouWant")'
Titulo = (string)query.Element("title"),
Autor = (string)query.Element(dc + "creator"),
Contenido = (string)query.Element(content + "encoded"),
PubDate = (string)query.Element("pubDate"),
Link = (string)query.Element("link"),
ID = getId((string)query.Element("guid")),
Imagen = getImage((string)query.Element(content + "encoded"))
};