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

问题描述 投票:1回答:3

我正在尝试在C#(Windows Universal App)中读取字段“ dc:creator”,但不起作用。我需要帮助。请

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
        }
     );
}
c# win-universal-app
3个回答
2
投票

要在特定名称空间中选择元素,您需要在其前面加上XNamespace。在您的情况下,应如下所示:

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
        }
    );
}

或者,如果您愿意,也可以这样:

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

可以在这里找到更多的阅读内容:

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


0
投票

Windows.Web.Syndication是用于解析RSS和Atom提要的API。有一个sample

在这种情况下,您可以在dc:creator中找到扩展元素为SyndicationItem.ElementExtensions


0
投票

Dotnet核心答案

使用SyndicationClass读取RSS feed仅需要几行代码

安装软件包: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>();
© www.soinside.com 2019 - 2024. All rights reserved.