4

在 Windows 8 Store App 中,我正在使用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> 
4

2 回答 2

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();
于 2013-05-19T11:00:56.447 回答
2

尝试这个

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

或者

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();
于 2015-09-01T11:55:18.220 回答