我的应用程序连接到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)
答案 0 :(得分:0)
我设法使用Default DefaultValueAttribute:
来解决它[DefaultValueAttribute(0)]
public int OAR
{
get { return this.OARField; }
set { this.OARField = value; }
}