SyndicationFeed:如何访问已编码的内容
本文关键字:编码 访问 何访问 SyndicationFeed | 更新日期: 2023-09-27 18:14:19
在Windows 8商店应用程序中,我正在使用SyndicationFeed
读取一些Xml数据。RSS提要的一些条目包含例如content:encoded
(xmlns:content='…')元素。我认为没有办法通过SyndicationItem获取这些元素的内容?!
这就是为什么我尝试在我的foreach(SyndicationItem item in feeditems)
中这样做:
item.GetXmlDocument(feed.SourceFormat).SelectSingleNode("/item/*:encoded]").InnerText;
但这不起作用。我注意到如何使用NamespaceManager
等在冬季。现在我正在访问内容:通过其他元素的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>
只用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();
try this
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();