基于属性值反序列化XML

时间:2013-04-22 13:01:01

标签: c# .net xml xml-serialization

我有一些我需要反序列化的XML

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

进入像

这样的课程
[XmlRoot(ElementName="element")]
public class Element
{
  public string MyKey1 { get; set; }
  public string MyKey2 { get; set; }
}

我是否可以注释MyKey1和MyKey2,以便如果上面的xml被反序列化,那么MyKey1将是“一个值”而MyKey2将等于“另一个值”?如果没有,那么对这类属性进行反序列化的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用XmlAttribute属性,但您的xml似乎更适合Dictionary<string,string>

使用Linq To 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"]);