XMLをクラスに直列化解除する際にいくつかの問題があります。XML要素を逆シリアル化する
これはXMLです:
<?xml version="1.0" encoding="utf-8" ?>
<InterestRates>
<!--Type A -->
<InterestRates_A>
<InterestRate_A>
<ValidFrom></ValidFrom>
<ValidTo>2004-12-31</ValidTo>
<Rate>0.00000</Rate>
</InterestRate_A>
<InterestRate_A>
<ValidFrom>2005-01-01</ValidFrom>
<ValidTo>2005-12-31</ValidTo>
<Rate>0.04247</Rate>
</InterestRate_A>
<InterestRate_A>
<ValidFrom>2005-01-01</ValidFrom>
<ValidTo>2005-12-31</ValidTo>
<Rate>0.04247</Rate>
</InterestRate_A>
<InterestRate_A>
<ValidFrom>2006-01-01</ValidFrom>
<ValidTo>2006-12-31</ValidTo>
<Rate>0.02986</Rate>
</InterestRate_A>
<InterestRate_A>
<ValidFrom>2007-01-01</ValidFrom>
<ValidTo>2009-10-30</ValidTo>
<Rate>0.02740</Rate>
</InterestRate_A>
<InterestRate_A>
<ValidFrom>2009-10-31</ValidFrom>
<ValidTo>2009-10-30</ValidTo>
<Rate>0.02470</Rate>
</InterestRate_A>
</InterestRates_A>
<!--Type B -->
<InterestRates_B>
<InterestRate_B>
<ValidFrom>2016-05-01</ValidFrom>
<ValidTo></ValidTo>
<Rate>0.05</Rate>
<Rate2>2.05</Rate2>
</InterestRate_B>
</InterestRates_B>
<!--Type C -->
<InterestRates_C>
<InterestRate_C>
<ValidFrom>2017-01-01</ValidFrom>
<ValidTo></ValidTo>
<Rate>2</Rate>
</InterestRate_C>
</InterestRates_C>
<!--Type D -->
<InterestRates_D>
<InterestRate_D>
<ValidFrom>2017-01-01</ValidFrom>
<ValidTo></ValidTo>
<Rate>3</Rate>
</InterestRate_D>
</InterestRates_D>
<!--Type E -->
<InterestRates_E>
<InterestRate_E>
<ValidFrom>2017-01-01</ValidFrom>
<ValidTo></ValidTo>
<Rate>5</Rate>
</InterestRate_E>
</InterestRates_E>
<!--Type F -->
<InterestRates_F>
<InterestRate_F>
<ValidFrom>2017-01-01</ValidFrom>
<ValidTo></ValidTo>
<Rate>7</Rate>
</InterestRate_F>
</InterestRates_F>
</InterestRates>
これはコードです:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace Interest
{
// Root class
[XmlRoot("InterestRates")]
public class InterestRates
{
[XmlElement("InterestRates_A")]
public InterestRates_A InterestRates_A { get; set; }
[XmlElement("InterestRates_B")]
public InterestRates_B InterestRates_B { get; set; }
[XmlElement("InterestRates_C")]
public InterestRates_C InterestRates_C { get; set; }
[XmlElement("InterestRates_D")]
public InterestRates_D InterestRates_D { get; set; }
[XmlElement("InterestRates_E")]
public InterestRates_E InterestRates_E { get; set; }
[XmlElement("InterestRates_F")]
public InterestRates_F InterestRates_F { get; set; }
}
[XmlType("InterestRates_A")]
public class InterestRates_A
{
[XmlArrayItem("InterestRate_A", typeof(InterestRate_A))]
public InterestRate_A[] InterestRate_A { get; set; }
}
[XmlType("InterestRates_B")]
public class InterestRates_B
{
[XmlArray("InterestRate_B")]
[XmlArrayItem("InterestRate_B", typeof(InterestRate_B))]
public InterestRate_B[] InterestRate_B { get; set; }
}
[XmlType("InterestRates_C")]
public class InterestRates_C
{
[XmlArray("InterestRate_C")]
[XmlArrayItem("InterestRate_C", typeof(InterestRate_C))]
public InterestRate_C[] InterestRate_C { get; set; }
}
[XmlType("InterestRates_D")]
public class InterestRates_D
{
[XmlArray("InterestRate_D")]
[XmlArrayItem("InterestRate_D", typeof(InterestRate_D))]
public InterestRate_D[] InterestRate_D { get; set; }
}
[XmlType("InterestRates_E")]
public class InterestRates_E
{
[XmlArray("InterestRate_E")]
[XmlArrayItem("InterestRate_E", typeof(InterestRate_E))]
public InterestRate_E[] InterestRate_E { get; set; }
}
[XmlType("InterestRates_F")]
public class InterestRates_F
{
[XmlArray("InterestRate_F")]
[XmlArrayItem("InterestRate_F", typeof(InterestRate_F))]
public InterestRate_F[] InterestRate_F { get; set; }
}
[Serializable]
public class InterestRate_A
{
[XmlElement("ValidFrom")]
public string ValidFrom { get; set; }
[XmlElement("ValidTo")]
public string ValidTo { get; set; }
[XmlElement("Rate")]
public string Rate { get; set; }
}
[Serializable]
public class InterestRate_B
{
[XmlElement("ValidFrom")]
public string ValidFrom { get; set; }
[XmlElement("ValidTo")]
public string ValidTo { get; set; }
[XmlElement("Rate")]
public string Rate { get; set; }
[XmlElement("Rate2")]
public string Rate2 { get; set; }
}
[Serializable]
public class InterestRate_C
{
[XmlElement("ValidFrom")]
public string ValidFrom { get; set; }
[XmlElement("ValidTo")]
public string ValidTo { get; set; }
[XmlElement("Rate")]
public string Rate { get; set; }
}
[Serializable]
public class InterestRate_D
{
[XmlElement("ValidFrom")]
public string ValidFrom { get; set; }
[XmlElement("ValidTo")]
public string ValidTo { get; set; }
[XmlElement("Rate")]
public string Rate { get; set; }
}
[Serializable]
public class InterestRate_E
{
[XmlElement("ValidFrom")]
public string ValidFrom { get; set; }
[XmlElement("ValidTo")]
public string ValidTo { get; set; }
[XmlElement("Rate")]
public string Rate { get; set; }
}
[Serializable]
public class InterestRate_F
{
[XmlElement("ValidFrom")]
public string ValidFrom { get; set; }
[XmlElement("ValidTo")]
public string ValidTo { get; set; }
[XmlElement("Rate")]
public string Rate { get; set; }
}
}
私は私のルートクラスInterestRates
にXMLをデシリアライズすると、すべてのInterestRate_X
コレクションは空です。どのようにこれを修正することができますか?
[XmlType("InterestRates_B")]
public class InterestRates_B
{
[XmlArray("InterestRate_B")]
[XmlArrayItem("InterestRate_B", typeof(InterestRate_B))]
public InterestRate_B[] InterestRate_B { get; set; }
}
これはInterestRate_X
コレクションは、容器内にシリアル化することを示している:
問題は何ですか? – mybirthname
正しく動作しません。 – rbr94
<! - Type A、B、C ...コメントタグが閉じられていない可能性がありますか? – Lidaranis