gpt4 book ai didi

c# - 如何将具有不同名称的xml节点反序列化为列表

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:15 24 4
gpt4 key购买 nike

我想使用 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 的属性(property).

我该怎么做。

最佳答案

如果它们具有相同的结构,您可以为两个元素使用公共(public)类:

public class Time{
[XmlAttribute]
public string value {get; set; }
[XmlText]
public string Text {get;set;} // this will hold the innerText value ("10") of <Time>
}

public class Prod{

[XmlAttribute]
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;

[XmlAttribute(DataType = "duration")]
public string value
get
{
return XmlConvert.ToString(this._duration);
}

set
{
this._duration = XmlConvert.ToTimeSpan(value);
}
}

关于c# - 如何将具有不同名称的xml节点反序列化为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11735994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com