0

XMLオブジェクトの逆シリアル化に問題があります。生のXMLは、有効期限が切れていないcredits値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
}
4

3 に答える 3

4

タグ名は同じではありません。XMLにはがnonexpirecreditsあり、クラスにはがありますnonexpiredcredits

于 2013-02-25T12:26:28.380 に答える
1

この単純な xml を逆シリアル化するのはなぜですか..代わりにLINQ2XMLを使用できます..

XDocument doc=XDocument.Load(yourXML);
int no=(int)doc.Descendants().Element("nonexpirecredits");
于 2013-02-25T12:22:06.410 に答える
1

タイプミスがあります - あなたのxml属性はnonexpiredcreditsを指定していますが、あなたのxmlにはdがありません - あなたはそれをnonexpirecreditsと呼んでいます。

于 2013-02-25T12:28:48.383 に答える