Linq to XML - 将多个元素转换为单个类

时间:2011-01-28 13:31:25

标签: c# linq-to-xml

我有以下XML:

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

是否有LINQ to XML查询将此部分加载到ConfigProp类的单个实例?

public class ConfigProp
{
   public string Prop1 {get; set;}
   public string Prop2 {get; set;}
}

2 个答案:

答案 0 :(得分:4)

为什么你不用这个?

System.Configuration.ConfigurationManager.AppSettings["Prop1"];

答案 1 :(得分:2)

你会想要这样的东西

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
};

请注意,如果您的xml不包含Prop1和Prop2键,则抛出异常。