加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

选择节点Linq到Xml C#

发布时间:2020-12-16 07:44:20 所属栏目:百科 来源:网络整理
导读:XML文件格式: ?xml version="1.0" encoding="UTF-8"? urlset url locelement1/loc changefreqdaily/changefreq priority0.2/priority /url url locelement2/loc changefreqdaily/changefreq priority0.2/priority /url urlset 我想选择所有“loc”节点(elem
XML文件格式:
<?xml version="1.0" encoding="UTF-8"?>
    <urlset>    
        <url>
            <loc>element1</loc>
            <changefreq>daily</changefreq>
            <priority>0.2</priority>
        </url>
        <url>
            <loc>element2</loc>
            <changefreq>daily</changefreq>
            <priority>0.2</priority>
        </url>
    <urlset>

我想选择所有“loc”节点(element1,element2),但这不起作用!

foreach (XElement item in document.Elements("url").Descendants("loc")) // Change into what?
 {
      urlList.Add(item.Value);
 }
我怀疑问题是你要从document.Elements(“url”)而不是document.Root.Elements(“url”)…所以它正在寻找url的根元素,它不存在.

试试这个:

List<string> urlList = doc.Root.Elements("url")
                               .Elements("loc")
                               .Select(x => (string) x)
                               .ToList();

请注意,我没有在这里使用过Descendants,因为loc元素都直接位于url元素之下.

如果唯一的loc元素是正确的,你可以使用的另一种选择是:

List<string> urlList = doc.Descendants("loc")
                          .Select(x => (string) x)
                          .ToList();

(我假设urlList事先是空的……对于这种情况,我喜欢使用LINQ进行整个操作并消除只是添加到集合中的foreach循环.)

编辑:该代码适合我.这是一个简短但完整的程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;

class Test
{
    static void Main(string[] args)
    {
        string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
    <urlset>    
        <url>
            <loc>element1</loc>
            <changefreq>daily</changefreq>
            <priority>0.2</priority>
        </url>
        <url>
            <loc>element2</loc>
            <changefreq>daily</changefreq>
            <priority>0.2</priority>
        </url>
    </urlset>";

        XDocument doc = XDocument.Parse(xml);
        List<string> urlList = doc.Root
                                  .Elements("url")
                                  .Elements("loc")
                                  .Select(x => (string) x)
                                  .ToList();
        Console.WriteLine(urlList.Count);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读