Linq to XML:xml标记中的冒号问题

以下是检索内容标记中的值的代码:

var returnVerse = from item in xmlTreeVerse.Descendants("rss").Elements("channel").Elements("item") select new VerseModel { Verse = item.Element("content").Value, Url = "" }; 

这是XML文件:

    text text  text  Text     

我无法查询“content:encode”,因为查询“:”运算符无效。 请帮忙。

“冒号运算符”是名称空间。 您还需要使用命名空间进行查询。 您使用这样的名称空间:

 XNamespace content = XNamespace.Get("http://purl.org/rss/1.0/modules/content/"); Verse = item.Element(content + "encoded").Value 

这对我有用,因此映射回content:encoded为此问题content:encoded

 var ns = XNamespace.Get(@"http://purl.org/rss/1.0/modules/content/"); var xelems = xmlDoc.Descendants().ToList(); nodes.ForEach(n => n.Element(XName.Get("encoded", ns.NamespaceName)).Value); var elems = from x in xelems select x.Element(XName.Get("encoded", ns.NamespaceName)).Value 

如果您想快速测试这个适用于公共RSS提要,请在控制台应用程序或LinqPad上在Gist上运行此代码。

代替

 item.Element("content").Value 

试试这个:

 item.Element(XName.Get("encoded", "content")).Value 

如果item.Element()在那里返回null,则可能需要使用它:

 item.Element(XName.Get("encoded", "http://purl.org/rss/1.0/modules/content/")).Value