You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复C#代码以获取XML中File元素的所有值?

解决C#获取XML中File元素值的问题

目标XML结构

<Path> 
    <Entry>
        <File>name</File>
        <File>folder</File>
        <File>directory</File>
        <File>drive</File>
        <File>filename</File>
    </Entry>
</Path>

原代码问题分析

原代码存在几个核心问题:

  • XDocument.Load调用缺少文件路径参数,无法正确加载XML文件
  • 循环中item本身就是通过XPath定位到的File元素,却调用item.Descendants("Entry"),此时File节点下没有Entry子节点,自然获取不到任何元素
  • 冗余判断:既然XPath已经指定了Path/Entry/File,循环的每一项都是File元素,没必要再判断item.Name.ToString() == "File"

修正后的代码

方式一:使用XPath简化实现

// 替换为你的实际XML文件路径
XDocument filefolder = XDocument.Load("你的XML文件路径.xml");
// 直接通过XPath获取所有File元素的文本值
List<string> filename = filefolder.XPathSelectElements("Path/Entry/File")
                                  .Select(val => val.Value)
                                  .ToList();

方式二:使用LINQ to XML(无需XPath)

// 替换为你的实际XML文件路径
XDocument filefolder = XDocument.Load("你的XML文件路径.xml");
// 直接定位Entry下的所有File元素并提取值
List<string> filename = filefolder.Descendants("Entry")
                                  .Elements("File")
                                  .Select(val => val.Value)
                                  .ToList();

补充说明

如果你的XML带有命名空间,需要在查询时指定对应的命名空间,否则会出现获取不到元素的情况。

内容的提问来源于stack exchange,提问作者quentin27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:33:34