反序列化文件时的格式错误

时间:2013-06-11 03:59:44

标签: c# xml

我的应用程序连接到2个不同的服务器,它们以xml格式返回响应,作为字符串。然后我将字符串反序列化为一个对象。这适用于服务器1.但是当我从服务器2收到xml字符串时它失败。响应xml的唯一区别是<OAR>标记。 Server1将标记返回为<OAR>0</OAR>,其中server2返回空值<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选项,   NumberBuffer&安培; number,NumberFormatInfo info,Boolean parseDecimal)
  在System.Number.ParseInt32(String s,NumberStyles样式,   System.Xml.XmlConvert.ToInt32(String s)的NumberFormatInfo信息   在   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccountListInqRsCIF.Read31_AcctSummType(布尔   isNullable,Boolean checkType)at   Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccountListInqRsCIF.Read32_AcctListInqRsCIF(布尔   isNullable,Boolean checkType)

1 个答案:

答案 0 :(得分:0)

我设法使用Default DefaultValueAttribute:

来解决它
[DefaultValueAttribute(0)]
public int OAR
{
    get { return this.OARField; }
    set { this.OARField = value; }
}