【问题标题】:Format error when deserializing file反序列化文件时出现格式错误
【发布时间】:2013-06-11 03:59:43
【问题描述】:

我的应用程序连接到 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 options, NumberBuffer& 数字, NumberFormatInfo 信息, 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) 在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderAccountListInqRsCIF.Read32_AcctListInqRsCIF(布尔 isNullable, Boolean checkType)

【问题讨论】:

  • 您的 XML 文件的第 3028 行是什么以及您要反序列化的类 AccountListInqRsCIF 是什么?
  • 会是本地化问题吗? xml 包含小数点,而由于本地化设置,需要小数点逗号?
  • @FaNIX 你的类是什么,它在那里接受空值?如果可能的话,用它更新你的问题。

标签: c# xml


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多