如何修复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
相关产品推荐
相关产品推荐

