简体   繁体   English

C# 如何从 RSS 提要中读取“dc:creator”元素?

[英]C# How to read “dc:creator” element from an RSS feed?

I am trying read field “dc:creator” in C# (Windows Universal App) and not work.我正在尝试在 C#(Windows 通用应用程序)中读取字段“dc:creator”但不起作用。 I need help.我需要帮助。 Please

HttpClient httpClient = new HttpClient();
var rssContent = await httpClient.GetStringAsync("http://www.talkingwindows.com.br/feed");
XElement xmlitems = XElement.Parse(rssContent);
List<XElement> elements = xmlitems.Descendants("item").ToList();

foreach (XElement rss in elements)
{
    Lista.Add(
        new Model
        {
          Titulo = rss.Element("title").Value,
          DataPublicacao = rss.Element("pubDate").Value,
          Descricao = rss.Element("description").Value,
          //Autor = rss.Element("dc:creator xmlns:dc=\"http://purl.org/dc/elements/1.1/\"").Value,
          Link = rss.Element("link").Value
        }
     );
}

To select the element in a specific namespace, you need to prefix it with an XNamespace .要选择特定命名空间中的元素,您需要为其添加XNamespace前缀。 In your case, it should look like this:在你的情况下,它应该是这样的:

XNamespace dcNamespace = "http://purl.org/dc/elements/1.1/";

foreach (XElement rss in elements)
{
    Lista.Add(
        new Model
        {
            Titulo = rss.Element("title").Value,
            DataPublicacao = rss.Element("pubDate").Value,
            Descricao = rss.Element("description").Value,
            Autor = rss.Element(dcNamespace + "creator").Value,
            Link = rss.Element("link").Value
        }
    );
}

Or if you prefer, you can do it like this:或者,如果您愿意,可以这样做:

Autor = rss.Element("{http://purl.org/dc/elements/1.1/}creator").Value,

Further reading on this can be found here:可以在此处找到有关此内容的进一步阅读:

https://msdn.microsoft.com/en-us/library/bb387075.aspx https://msdn.microsoft.com/en-us/library/bb387075.aspx

Windows.Web.Syndication is an API for parsing RSS and Atom feeds. Windows.Web.Syndication是用于解析 RSS 和 Atom 提要的 API。 There is a sample .有一个样本

In that case, you can find extension elements as dc:creator in SyndicationItem.ElementExtensions .在这种情况下,您可以在SyndicationItem.ElementExtensions找到dc:creator扩展元素。

Dotnet Core Answer Dotnet 核心答案

Reading RSS Feeds using SyndicationClass takes just a couple of lines of code使用SyndicationClass读取 RSS 提要只需要几行代码

Install Package: System.ServiceModel.Syndication安装包:System.ServiceModel.Syndication

 using System.Xml;
 using System.ServiceModel.Syndication;

 var reader = XmlReader.Create("https://blogs.yourdomain.com/feed");
 var feed = SyndicationFeed.Load<SyndicationFeed>(reader);

 foreach (var blog in feed.Items)
 var creator = blog.ElementExtensions.First(x => x.OuterName == "creator").GetObject<string>();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM