gpt4 book ai didi

.net - 无缘无故反序列化以下 XML(来自 REST 服务)时发生异常!

转载 作者:行者123 更新时间:2023-12-04 17:59:53 25 4
gpt4 key购买 nike

我无法找到以下 XML 无法反序列化的原因。

留言:

There is an error in XML document (23, 26).

内部异常:

Input string was not in a correct format.

调用代码(除了下面的 XML 之外,所有内容都可以正常工作):

Public Shared Function DeserializeObject(Of T)(ByVal serializedXml As String) As T
Dim serializer As New XmlSerializer(GetType(T))

Using strReader As New IO.StringReader(serializedXml)
Return DirectCast(serializer.Deserialize(strReader), T)
End Using

End Function

XML(看起来没问题 - 问题出现在 DiscountCode 的第一个左方括号之后):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MyResponse>
<Shoppinglist>
<ShoppinglistName>ShoppingListName</ShoppinglistName>
<Currency>GBP</Currency>
<PriceType>Retail</PriceType>
<Orders>
<Order>
<OrderLineId>Test</OrderLineId>
<Completed>false</Completed>
<Description>Other Item</Description>
<Quantity>1</Quantity>
<Parts>
<Part>
<PartId>43543543435</PartId>
<Description>Cylinder Assy - Master</Description>
<PriceInclTax>92.16</PriceInclTax>
<PriceExclTax>76.8</PriceExclTax>
<Quantity>1</Quantity>
<TaxRate>20.0</TaxRate>
<NetDiscountCode>ZZ</NetDiscountCode>
<SurchargeQuantity>1.0</SurchargeQuantity>
-------------> <DiscountRate>0.0</DiscountRate>
</Part>
</Parts>
</Order>
</Orders>
</Shoppinglist>
<ReturnCode>1</ReturnCode>
<StatusMessage>Open tasks exist</StatusMessage>
</MyResponse>

谁能看出哪里出了问题?

堆栈跟踪(外部异常):

 at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader)

内部异常的堆栈跟踪:

 at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)    
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Xml.XmlConvert.ToInt32(String s)

这很奇怪,因为看起来它正在解析为 Int,而它应该解析为十进制...

T 类的属性:

Protected _DiscountRate As Decimal
Public Property DiscountRate() As Decimal
Get
Return _DiscountRate
End Get
Set(ByVal Value As Decimal)
_DiscountRate = Value
End Set
End Property

我添加了以下内容,但没有任何区别:

<System.Xml.Serialization.XmlElement(Type:=GetType(Decimal))> _

我怀疑这与奇怪的字符有关,因为我看不到任何字符。此外,将类型更改为 Double 也无法解决该问题。还有其他想法吗?

最佳答案

关于 XML 错误行和列号的一个非常重要的注意事项:XML声明不算一行,所以位置(0,0)在你的文件中实际上是第二行,而不是声明的行

编辑:抱歉,我的意思是,如果异常显示 (23, 26) 有问题,那么它实际上是 (24,26)。

关于.net - 无缘无故反序列化以下 XML(来自 REST 服务)时发生异常!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6504689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com