我想使用c#反序列化xml文件。
该文件具有以下形式:
<parent>
<TotProd Name="Total Produce Kwh">
<Time value="00:00:00">10</Time>
<Time value="00:30:00">10</Time>
............
</TotProd>
<ProdToNet Name="Produce to Net (iec)">
<Time value="00:00:00">10</Time>
<Time value="00:30:00">10</Time>
...........
</ProdToNet> .....
</parent>
我想将parent
的所有子元素反序列化为List<Myclass>
TotProd/ProdToNet
作为Myclass
的属性。
我该怎么做。
答案 0 :(得分:4)
如果元素具有相同的结构,则可以对这两个元素使用公共类:
public class Time{
[XmlAttrubute]
public string value {get; set; }
[XmlText]
public string Text {get;set;} // this will hold the innerText value ("10") of <Time>
}
public class Prod{
[XmlAttrubute]
public string Name {get; set; }
[XmlElement("Time")]
public List<Time> Time {get; set; }
}
[XmlRoot("parent")]
public class Parent{
[XmlElement(ElementName="ProdToNet", Type=typeof(Prod))]
[XmlElement(ElementName="TotProd", Type=typeof(Prod))]
public List<Prod> {get; set;}
}
更新:
Time:value
似乎是一个TimeSpan持续时间对象,因此它可以表示为:
public class Time{
[XmlIgnore]
public TimeSpan _duration;
[XmlAttrubute(DataType = "duration")]
public string value
get
{
return XmlConvert.ToString(this._duration);
}
set
{
this._duration = XmlConvert.ToTimeSpan(value);
}
}