C# 基于属性值反序列化XML

C# 基于属性值反序列化XML,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,我有一些XML需要反序列化 <element> <childElement key="myKey1">a value</childElement> <childElement key="myKey2">another value</childElement> </element> 我是否可以注释MyKey1和MyKey2,这样如果上面的xml是反序列化的,那么MyKey1将是“一个值”,MyKey2将等于“另一个值

我有一些XML需要反序列化

<element>
  <childElement key="myKey1">a value</childElement>
  <childElement key="myKey2">another value</childElement>
</element>

我是否可以注释MyKey1和MyKey2,这样如果上面的xml是反序列化的,那么MyKey1将是“一个值”,MyKey2将等于“另一个值”?如果不是,那么反序列化这样的属性的最佳方法是什么?

您可以使用
xmldattribute
属性,但是您的xml似乎更适合
字典

使用Linq转换Xml

string xml = @"<element>
    <childElement key=""myKey1"">a value</childElement>
    <childElement key=""myKey2"">another value</childElement>
</element>";

var xDoc = XDocument.Parse(xml);
var dict = xDoc.Descendants("childElement")
               .ToDictionary(x => x.Attribute("key").Value, x => x.Value);

Console.WriteLine(dict["myKey1"]);
stringxml=@”
价值
另一个价值
";
var xDoc=XDocument.Parse(xml);
var dict=xDoc.substands(“childElement”)
.ToDictionary(x=>x.Attribute(“key”).Value,x=>x.Value);
控制台写入线(dict[“myKey1]”);

@PreetaSangha的可能重复,这是一个稍微不同的情况。他们希望根据属性使用不同的元素。我想使用属性中的值作为元素名。关于:@PreetSangha类似,但也略有不同。这非常感谢,只需要多一点代码,但可能比任何复杂的基于属性的方法都要明显。
string xml = @"<element>
    <childElement key=""myKey1"">a value</childElement>
    <childElement key=""myKey2"">another value</childElement>
</element>";

var xDoc = XDocument.Parse(xml);
var dict = xDoc.Descendants("childElement")
               .ToDictionary(x => x.Attribute("key").Value, x => x.Value);

Console.WriteLine(dict["myKey1"]);