【发布时间】: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 你的类是什么,它在那里接受空值?如果可能的话,用它更新你的问题。