反序列化XML对象时忽略值

时间:2013-02-25 12:14:09

标签: c# xml

我无法反序列化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
}

3 个答案:

答案 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。