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

3

我有以下的XML:

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

有没有一种LINQ到XML查询方式可以将这个部分加载到ConfigProp类的单个实例中?
public class ConfigProp
{
   public string Prop1 {get; set;}
   public string Prop2 {get; set;}
}
2个回答

4

为什么不使用这个呢?

System.Configuration.ConfigurationManager.AppSettings["Prop1"];
(翻译无误,原文为代码,请按照格式要求复制)

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键,则会引发异常。

这个不起作用。你需要使用xml.Descendants("add")或者xml.Element("appSettings").Elements("add")代替xml.Elements("add") - 这样它就能工作了... - marc_s
1
@marc_s 如果你假设给定的 XML 是一个 XDocument,那么这是正确的。由于我没有真正指定它是什么,所以这不是一个无效的假设。我已经更新了以明确我的意图。 - juharr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接