反序列化 XML - 值对于无符号字节来说太大或太小
Deserializing XML - Value was either too large or too small for an unsigned byte
我正在使用他们的 API 从 SagePay 下载交易数据。调用的结果给了我一个 XML 字符串,然后我将其反序列化并存储在 class.
中
每次调用最多检索 50 条记录,我在给定的 datetime
范围内进行多次调用,直到检索到所有记录。这对于第一个 X 调用工作正常,但随后出现错误:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll
Additional information: There is an error in XML document (1, 141).
Inner Exception: {"Value was either too large or too small for an unsigned byte."}
XML document (1, 141).
中的值在每次尝试时并不总是保持相同。如果我看这个位置的字符,我没有发现任何错误。
在此示例中,字符 141 是 <totalrows>
中的“t”:
<?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生成的class(特殊粘贴)
我错过了什么?
我显然不能 post 所有 XML 因为它是实时交易信息,但如果我遗漏了任何必需的信息,请告诉我
读取错误。无符号字节的最大大小为 255——因此 300 的值就太大了。
16684 也太大了。不要挂在错误报告的列号上。查看错误消息和您正在加载的内容。
我正在使用他们的 API 从 SagePay 下载交易数据。调用的结果给了我一个 XML 字符串,然后我将其反序列化并存储在 class.
中每次调用最多检索 50 条记录,我在给定的 datetime
范围内进行多次调用,直到检索到所有记录。这对于第一个 X 调用工作正常,但随后出现错误:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll
Additional information: There is an error in XML document (1, 141).
Inner Exception: {"Value was either too large or too small for an unsigned byte."}
XML document (1, 141).
中的值在每次尝试时并不总是保持相同。如果我看这个位置的字符,我没有发现任何错误。
在此示例中,字符 141 是 <totalrows>
中的“t”:
<?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生成的class(特殊粘贴)
我错过了什么?
我显然不能 post 所有 XML 因为它是实时交易信息,但如果我遗漏了任何必需的信息,请告诉我
读取错误。无符号字节的最大大小为 255——因此 300 的值就太大了。
16684 也太大了。不要挂在错误报告的列号上。查看错误消息和您正在加载的内容。