我想将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 并且我的程序突然结束,没有给出任何异常。这种行为的原因是什么?