0

我的应用程序连接到 2 个不同的服务器,它们以字符串形式返回 xml 格式的响应。然后我将字符串反序列化为一个对象。这适用于服务器 1。但是当我从服务器 2 接收到 xml 字符串时它失败了。响应 xml 的唯一区别是<OAR>标签。Server1 返回标签,<OAR>0</OAR>其中 server2 返回 null 值<OAR/>。当试图反序列化它时,它失败了:

从 SERVER2 的 XML 响应中提取

            <PaymentFreq>000</PaymentFreq>
            <AvailableBalance>
                <Amt>0.00</Amt>
            </AvailableBalance>
            <AcctBranch>629</AcctBranch>
            <OAR />

C#代码:

            XmlSerializer xs = new XmlSerializer(typeof(AccountListInqRsCIF));
            StringReader reader = new StringReader(message);
            acctListInqRs = (AccountListInqRsCIF)xs.Deserialize(reader);

例外:

{“输入字符串的格式不正确。”}

“XML 文档中存在错误 (1, 3028)。”

在 System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
在 System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 在 System.Xml.XmlConvert.ToInt32(String s)
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccountListInqRsCIF.Read31_AcctSummType(Boolean isNullable, Boolean checkType) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccountListInqRsCIF.Read32_AcctListInqRsCIF(Boolean isNullable, Boolean checkType)

4

1 回答 1

1

我设法通过使用 Default DefaultValueAttribute 来解决它:

[DefaultValueAttribute(0)]
public int OAR
{
    get { return this.OARField; }
    set { this.OARField = value; }
}
于 2013-06-11T04:14:35.823 回答