反序列化XML - 对于无符号字节,值太大或太小

时间:2015-12-10 16:57:24

标签: c# xml sagepay

我正在使用他们的API从SagePay下载交易数据。调用的结果为我提供了一个XML字符串,然后我将其反序列化并存储在类中。

每次调用都会检索最多50条记录,我会在给定的datetime范围内进行多次调用,直到检索到所有记录为止。这适用于前X次调用,但后来出现错误:

  

未处理的类型' System.InvalidOperationException'发生在System.Xml.dll

中      

其他信息:XML文档中存在错误(1,141)。

     

内部异常:{"对于无符号字节,值太大或太小。"}

XML document (1, 141).中的值并不总是与每次尝试保持一致。如果我看看这个位置上的角色,我看不出任何错误。

在这个例子中,字符141是&#34; t&#34;在<totalrows>

<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><vspaccess><errorcode>0000</errorcode><transactions><startrow>251</startrow><endrow>300</endrow><totalrows>16684</totalrows>

251的<startrow>表示在此错误之前已经有5次成功通话。

反序列化代码:

XmlSerializer serializer = new XmlSerializer(typeof(vspaccess));
StringReader rdr = new StringReader(xmlDoc.InnerXml);
vspaccess sageTransactions = (vspaccess)serializer.Deserialize(rdr);

vspaccess是VS2013生成的类(特殊粘贴)

我错过了什么?

我显然无法发布所有XML,因为它是实时交易信息,但如果我错过了任何所需信息,请告诉我

1 个答案:

答案 0 :(得分:5)

阅读错误。无符号字节最大大小为255 - 所以值300将是大的。

16684也将是大的。不要挂断错误报告的列号。查看错误消息以及您要加载的内容。