1

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>withに逆シリアル化したい。TotProd/ProdToNetMyclass

これどうやってするの。

4

1 に答える 1

4

構造が同じ場合は、両方の要素に共通のクラスを使用できます。

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);
        }
    }
于 2012-07-31T08:47:32.313 に答える