[英]C# xml serialization of multiple elements with same element name
我有一个具有以下内容的xml文件:
<offer>
...
<date type="Foo">Some value 1</date>
<date type="Bar">Some value 2</date>
<date type="Baz">Some value 3</date>
...
</offer>
我有一个这样的枚举:
public enum DateType
{
Foo, Bar, Baz
}
和类:
public class Date
{
public DateType Type { get; set; }
public string Value { get; set; }
}
public class Schedule
{
...
public Date[] Dates { get; set; }
...
}
我需要做什么才能在此类中反序列化xml?
PS因此,我需要将Enum值映射到public Date[] Dates { get; set; }
public Date[] Dates { get; set; }
public Date[] Dates { get; set; }
。
使用此类:
public enum DateType
{
Foo, Bar, Baz
}
[XmlRoot(ElementName = "date")]
public class Date
{
[XmlAttribute(AttributeName = "type")]
public DateType Type { get; set; }
[XmlText]
public string Value { get; set; }
}
[XmlRoot(ElementName = "offer")]
public class Offer
{
[XmlElement(ElementName = "date")]
public Date[] Dates { get; set; }
}
并反序列化:
string lsXml = @"<offer>
<date type=""Foo"">Some value 1</date>
<date type=""Bar"">Some value 2</date>
<date type=""Baz"">Some value 3</date>
</offer>";
XmlSerializer loXmlSerializer = new XmlSerializer(typeof(Offer));
var loOffer = loXmlSerializer.Deserialize(new StringReader(lsXml)) as Offer;
foreach (var loDate in loOffer.Dates)
{
Console.WriteLine($"{loDate.Type}: {loDate.Value}");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.