2013-09-24 83 views
0

有一个XML文件 结构抓值的问题是其次读取XML嵌套节点值

<configuration> 
    <settings> 
     <add key="folder" value = "c:\...." /> 
    </settings> 
</configuration> 

我希望能够读取文件夹中的价值。

string val = string.Empty; 

     foreach (XElement element in XElement.Load(file).Elements("configuration")) 
     { 
      foreach (XElement element2 in element.Elements("settings")) 
      { 
       if (element2.Name.Equals("folder")) 
       { 
        val = element2.Attribute(key).Value; 
        break; 
       } 
      } 
     } 

     return val; 
+0

这不是您的应用程序的app.config文件是什么呢? – Jonesopolis

+0

它来自另一个我需要为值读取的应用程序。 – Tsukasa

回答

2

元素的名称不是folder ......这就是key属性的值。还请注意,因为您使用XElement.Load,元素configuration元素 - 要求Elements("configuration")会给您一个空集合。你可以加载一个XDocument,或者只是假设你在一个configuration元素上,并在其下面查找settings

我想你想:

return XElement.Load(file) 
       .Elements("settings") 
       .Elements("add") 
       .Where(x => (string) x.Attribute("key") == "folder") 
       .Select(x => (string) x.Attribute("value")) 
       .FirstOrDefault(); 
1

您可以使用XPath:

var folder = XElement.Load(file) 
        .XPathSelectElements("/settings/add[@key='folder']") 
        .Select(a => (string)a.Attribute("value")) 
        .FirstOrDefault(); 
+0

比选择的答案好得多! – LastTribunal