阅读简单的XML文件

时间:2016-09-27 12:34:57

标签: c# xml linq

我正在尝试使用linq读取一个非常简单的xml文件。我知道如何在子节点上使用for循环但我正在尝试学习linq。无论如何,我有一个文件:

<firstElement>
  <Setting Name="appDataPath" Value="some\\path" />
  <Setting Name="appConfigFileName" Value="somename.xml" />
  <Setting Name="appConfigFilePath"  Value="some\\path" />
</firstElement>

我想获得设置属性。我有这段代码:

//Load xml
XDocument xdoc = XDocument.Load(fullyQualifiedPath);

var settings = from item in xdoc.Descendants("firstElement")
     select new
     {
         name = item.Attribute("Name").Value,
         val = item.Attribute("Value").Value
     };

     // create a dictionary
     Dictionary<string, string> settingsDictionary = 
                        new Dictionary<string, string>();

   //Loop through results
   foreach (var setting in settings)
   {
      settingsDictionary.Add(setting.name, setting.val);
   }

   xdoc.Save(fullyQualifiedPath);

由于某些原因,查询后设置为空。我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

只获取设置节点写:

obj

答案 1 :(得分:1)

您没有任何名为eStack的元素。试试这个......

var settingsDictionary = xdoc.Descendants("Setting")
                             .ToDictionary(x => (string)x.Attribute("Name"), 
                                           x => (string)x.Attribute("Value")
                                           );