xml文字列を次のように定義された型クラスのオブジェクトにデシリアライズしたい
[Serializable]
[XmlRoot("rt")]
public class XMLSessionParameters
{
[XmlArrayItem("el")]
public List<Elements> Elements { get; set; }
}
public class Elements
{
[XmlAttribute("nm")]
public string Name { get; set; }
[XmlAttribute("vl")]
public string Value { get; set; }
}
以下は、デシリアライズしたい XML です。
<rt>
<el nm="Name" vl="ABCD_test"/>
<el nm="Dual" vl="AA"/>
<el nm="Quad" vl="ABCD"/>
<el nm="YYMMDD" vl="120614"/>
</rt>
以下は、XML文字列の逆シリアル化に使用しているメソッドです
public static XMLSessionParameters DeserializeSessionParameters(string xmlString)
{
XMLSessionParameters parameters = (XMLSessionParameters)Deserialize(typeof(XMLSessionParameters), xmlString);
XElement root = XElement.Parse(xmlString);
List<XElement> fileElements = root.Elements().ToList();
foreach (XElement fileEle in fileElements)
{
string xml = fileEle.ToString();
Elements ele = (Elements)Deserialize(typeof(Elements), xml);
parameters.Elements.Add(ele);
}
return parameters;
}
private static object Deserialize(Type type, string XmlString)
{
XmlSerializer serializer = new XmlSerializer(type);
StringReader stringReader = new StringReader(XmlString);
XmlReader xmlReader = new XmlTextReader(stringReader);
object serializedObj = serializer.Deserialize(xmlReader);
return serializedObj;
}
上記の XML を文字列として渡し、Deserialize 関数が呼び出されると、XMLReader オブジェクトは値を None として所有し、プログラムは例外を与えずに突然終了します。そのような行動の原因は何ですか?