C# how can I debug a deserialization exception?

孤街醉人 提交于 2019-12-02 02:10:29

Line and character numbers are reported to the exception message via the IXmlLineInfo interface, which XmlTextReader implements. Of note, both the line number and line position start with number one (and are zero only when not available).

Thus "(235, 17)" are the line number and position in the line (starting at one) at which the reader was positioned when the error was thrown. In most cases, that will be actual position in the XML file at which the error occurs. However, sometimes the XML Serializer will have advanced the reader to the next node before the error is thrown. From experimentation:

  1. If the XML is not well-formed, then the error will be where the line and position report.

  2. If the XML is well formed but an attribute value cannot be deserialized, then the attribute with the bad value will be where the line and position report.

  3. However, if the XML is well-formed and an element value cannot be deserialized, the XML reader will already have been advanced past the end of the element to the beginning of the next XML reader node (typically an element opening or closing), so the element causing the problem will be one one immediately before the reported location, possibly on the previous line.

  4. If the error is reported at (0, 0) then the reader was unable to begin parsing the XML. Likely problems include:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!