Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq到XML:XML标记中的冒号问题_C#_.net_Linq To Xml - Fatal编程技术网

C# Linq到XML:XML标记中的冒号问题

C# Linq到XML:XML标记中的冒号问题,c#,.net,linq-to-xml,C#,.net,Linq To Xml,以下是检索内容标记中的值的代码: var returnVerse = from item in xmlTreeVerse.Descendants("rss").Elements("channel").Elements("item") select new VerseModel { Verse = it

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

   var returnVerse = from item in xmlTreeVerse.Descendants("rss").Elements("channel").Elements("item")
                              select new VerseModel
                               {
                                   Verse = item.Element("content").Value,
                                   Url = ""
                               };
以下是XML文件:

<?xml version="1.0" ?>
<rss version="2.0"
                    xmlns:dc="http://purl.org/dc/elements/1.1/"
                    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
                    xmlns:admin="http://webns.net/mvcb/"
                    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
                    xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
    <title>text</title>
    <link>text</link>
    <item>
      <title>text</title>
      <content:encoded>
        Text
      </content:encoded>
    </item>
  </channel>
</rss>
我无法查询content:encode,因为查询:运算符无效。请帮忙。

代替

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
而不是

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

该冒号运算符是一个名称空间。您还需要使用名称空间进行查询。您可以使用如下名称空间:

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

该冒号运算符是一个名称空间。您还需要使用名称空间进行查询。您可以使用如下名称空间:

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

这对我有用,所以映射回内容:为这个问题编码

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源上快速测试这一点,请在控制台应用程序或上运行此代码。

这对我很有效,因此映射回内容:针对此问题编码

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源上快速测试这一点,请在控制台应用程序或上运行此代码。

是的,这不起作用。XName.Get的第二个参数是用于名称空间的。。好吧,交换一下我将编辑我的答案,这样做。是的,那不起作用。XName.Get的第二个参数是用于名称空间的。。好吧,交换一下我将编辑我的答案以执行此操作。