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