2011-01-28 10 views
3

に複数の要素私は、次のXMLいますLINQのXMLへ - 単一のクラス

<appSettings> 
    <add key="Prop1" value="1" /> 
    <add key="Prop2" value="2" /> 
</appSettings> 

はConfigPropクラスの単一のインスタンスに、このセクションをロードするためのXMLクエリにLINQはありますか?

答えて

2

あなたのXMLがPROP1とPROP2キーが含まれていない場合、これは例外をスローしていることを、この

var xml = XElement.Parse(
    @"<appSettings><add key=""Prop1"" value=""1"" /><add key=""Prop2"" value=""2"" /></appSettings>"); 
new ConfigProp 
{ 
    Prop1=xml 
     .Elements("add") 
     .Single(element=>element.Attribute("key").Value == "Prop1") 
     .Attribute("value") 
     .Value, 
    Prop2 = xml 
     .Elements("add") 
     .Single(element => element.Attribute("key").Value == "Prop2") 
     .Attribute("value") 
     .Value 
}; 

ノートのようなものをお勧めします。

+0

- これは動作しません。あなたは 'xml.Elements(" add ")'の代わりに '' add() ''要素を追加する必要があります。 。 –

+1

@marc_sこれは、 'xml'が与えられたXMLの' XDocument'であると仮定した場合、そしてそれが何であるかを実際には特定しなかったので真です。それは無効な仮定ではありません。私は私の意図を明確にするように更新しました。 – juharr

+0

ありがとう@juharr、うまく動作します。よろしく – Bill

4

なぜこれを使用しないのですか?

 
System.Configuration.ConfigurationManager.AppSettings["Prop1"]; 
関連する問題