如何使用C#迭代XML文件 [英] How to iterate XML file using C#

查看:106
本文介绍了如何使用C#迭代XML文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有.xml文件,如

I have .xml file like

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Folder>
    <path>C:\Users\bsushil\Documents\Sharpdesk Desktop\Tinki</path>
    <name>Tinkiiiii</name>
  </Folder>
  <Folder>
    <path>C:\Users\bsushil\Documents\Sharpdesk Desktop\Tinki\New folder</path>
    <name>New folder</name>
  </Folder>
  <Folder>
    <path>C:\Users\bsushil\Documents\Sharpdesk Desktop\Tinki\New folder (1)</path>
    <name>New folder (1)</name>
  </Folder>
</root>



我想迭代以获取值路径和名称。我该怎么办?



我尝试了什么:



我我在这个xml中使用。


I want to iterate to get the value path and name. how can I do ?

What I have tried:

I am creatin this xml using.

XElement root = xmlDoc.Element("root");
          root.Add(new XElement("Folder",
              new XElement("path", item.OriginalPath),
              new XElement("name", FolderShortcutName)));
          xmlDoc.Save(folderShortcutsFilsXml);





我只能使用



I can iterate only path using

var pathsList = xmlDoc.Descendants("path").Select(x => x.Value);



但我想要路径和名字两者并存储到字典< string,string>


but I want path and name both and store into Dictionary<string, string>

推荐答案

你可以实现这样的目标:



You could achieve your goal like this:

var xmlDocument = new XmlDocument();

xmlDocument.Load("data.xml");

var nodes = xmlDocument.DocumentElement?.SelectNodes("/root/Folder");

if (nodes == null) return;

var dictionary = nodes.Cast<XmlNode>().ToDictionary(node =>
{
	var selectSingleNode = node.SelectSingleNode("path");

	return selectSingleNode?.InnerText;
}, node =>
{
	var singleNode = node.SelectSingleNode("name");
	return singleNode?.InnerText;
});


这是我的工作解决方案

Here is my working solution
foreach (XElement xe in xdoc.Descendants("Folder"))
               {
                   dectionary.Add(xe.Element("name").Value, xe.Element("path").Value);
               }


这篇关于如何使用C#迭代XML文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆