我无法反序列化XML对象。原始XML显示nonxpiredcredits值为5,但对象的反序列化值为0.最重要的是,没有命中异常,反序列化过程似乎跳过了元素。任何帮助将不胜感激。
原始XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<theObject>
<mobilecredits>
<nonexpirecredits>5</nonexpirecredits>
</mobilecredits>
</theObject>
对象:
[Serializable()]
[XmlRoot("theObject")]
public class mobilecreditsWrapper
{
[XmlElement("mobilecredits")]
public mobilecredits credits { get; set; }
}
[Serializable()]
public class mobilecredits
{
[XmlElement("nonexpiredcredits")]
public int nonexpiredcredits { get; set; }
}
反序列化片段:
XmlSerializer s = new XmlSerializer(typeof(T));
//T is set to mobilecreditsWrapper in the generic function this code snippet is found in
var sr = new StringReader(res);
try
{
obj = (T)s.Deserialize(sr);
}
catch (Exception ex)
{
//this is not hit
}
答案 0 :(得分:4)
标签名称不一样。
在您的XML中,您有nonexpirecredits
,而在您的班级中,您有nonexpiredcredits
。
答案 1 :(得分:1)
为什么要对这个简单的xml进行反序列化..你可以使用 LINQ2XML 代替..
XDocument doc=XDocument.Load(yourXML);
int no=(int)doc.Descendants().Element("nonexpirecredits");
答案 2 :(得分:1)
你有一个拼写错误 - 你的xml属性指定了nonexpiredcredits,但你的xml没有d - 你称之为nonexpirecredits。