由于内部属性将xml序列化为对象时出错?

时间:2017-03-15 12:27:31

标签: c# xml xmlserializer

错误是:

反序列化Releye.Solution.Nordnet.ExternalService.AggregatedCustomerInfoJson类型的对象时出错。结束元素'availableForTrading'来自命名空间''预期。从命名空间''找到元素'curr'。

我怀疑它与标签“availableForTrading”(以及更多属性的副本)有关,“内部属性”为“curr = SEK”。

我不知道如何正确处理这个问题。任何建议表示赞赏。

我的班级看起来像这样:

[DataContract]
public class AccountSummaryItem
{
    public AccountSummaryItem()
    {
    }

    [DataMember(Name = "userMapping")]
    public List<UserMappingItem> usermappings { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string accno { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public int? atyid { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string category { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string minor { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string deceased { get; set; }

    [DataMember(Name = "riskEstimate")]
    public RiskEstimate RiskEstimate { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string amlCustomerInfoUpdateNeeded { get; set; }

    [DataMember(EmitDefaultValue = false, Name = "availableForTrading", IsRequired = false)]
    public string availableForTrading { get; set; }

    [DataMember(EmitDefaultValue = false, Name = "availableForWithdrawal", IsRequired = false)]
    public string availableForWithdrawal { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public bool blocked { get; set; }

    [DataMember(EmitDefaultValue = false, Name = "ownCapital", IsRequired = false)]
    public string ownCapital { get; set; }

    [DataMember(EmitDefaultValue = false, Name = "pawnValue", IsRequired = false)]
    public string pawnValue { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public bool shareville { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string totalValue { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string atycode { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string chgid { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string chgname { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public bool hasCreditAgreement { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public bool hasTrustee { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string ofcid { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string ofcname { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string regdate { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string role { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string roleDescription { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string username { get; set; }
}

xml看起来像这样:

<accountSummary>
<amlCustomerInfoUpdateNeeded>false</amlCustomerInfoUpdateNeeded>
<availableForTrading curr="SEK">269061.14</availableForTrading>
<availableForWithdrawal curr="SEK">10921.14</availableForWithdrawal>
<blocked>false</blocked>
<deceased>false</deceased>
<minor>false</minor>
<ownCapital curr="SEK">1152082.20718864</ownCapital>
<pawnValue curr="SEK">0.0</pawnValue>
<totalValue curr="SEK">10921.14</totalValue>
<accno>11245381213</accno>
<atycode>Depåkonton</atycode>
<atyid>108</atyid>
<category>OWNER</category>
<chgid>131476</chgid>
<chgname>SE PRB</chgname>
<hasTrustee>false</hasTrustee>
<ofcid>122</ofcid>
<ofcname>PRB</ofcname>
<regdate>1998-08-18</regdate>
</accountSummary>

1 个答案:

答案 0 :(得分:0)

我找到了一个可接受的解决方案。 通过以下方式添加表示此属性的类:

[DataContract]
public class AccountSummary_ownCapital
{
    public AccountSummary_ownCapital()
    {
    }

    [DataMember(EmitDefaultValue = false, Name = "$")]
    public double ownCapital { get; set; }

    [DataMember(EmitDefaultValue = false)]
    public string curr { get; set; }
}

然后改变我的&#34; old&#34; class to(对于包含内部&#34; curr&#34;的特定属性):

[DataMember(EmitDefaultValue = false)]
public AccountSummary_ownCapital ownCapital { get; set; }

然后我得到这个漂亮的自定义对象,其中包含curr-attribute的值和&#34; ownCapital&#34;的值。