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 に答える