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

发布于 2024-10-03 08:51:59 字数 1155 浏览 2 评论 0原文

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

   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”,因为查询“:”运算符无效。请帮忙。

Here's the code to retrieve the value in the content tag:

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

Here's the XML file:

<?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>

I can't query "content:encode" because it is invalid to query the ":" operator. Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

终止放荡 2024-10-10 08:51:59

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

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

That "colon operator" is a namespace. You need to query with a namespace as well. You use namespaces like this:

XNamespace content = XNamespace.Get("http://purl.org/rss/1.0/modules/content/");
Verse = item.Element(content + "encoded").Value
っ〆星空下的拥抱 2024-10-10 08:51:59

这对我有用,因此针对此问题映射回 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< /a>.

This worked for me, so mapped back to content:encoded for this question

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

If you want to quickly test this works on a public RSS feed, run this code in a console app or on LinqPad up here on Gist.

黒涩兲箜 2024-10-10 08:51:59

而不是

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

Instead of

item.Element("content").Value

Try this:

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

If item.Element() returns null there, you may need to use this instead:

item.Element(XName.Get("encoded", "http://purl.org/rss/1.0/modules/content/")).Value
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文