0

在 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;
4

2 回答 2

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();
于 2013-09-24T19:57:06.873 回答
1

您可以使用 XPath:

var folder = XElement.Load(file)
                     .XPathSelectElements("/settings/add[@key='folder']")
                     .Select(a => (string)a.Attribute("value"))
                     .FirstOrDefault();
于 2013-09-24T20:00:07.890 回答