【发布时间】:2015-12-01 09:44:49
【问题描述】:
我被要求调试代码,该代码使用 XmlSerializer 类中的反序列化方法将具有大而复杂的 XML 的字符串反序列化为具有给定类型的大而复杂的 C# 对象。
XML 文档来自客户。 XML 文档通常存在问题,因此无法正确反序列化。例如,它可能有一个非数字值,必须进入某个数字字段。
当反序列化发现问题时,它会抛出异常,但这并不能告诉我是哪个 XML 元素和什么值导致了问题。这使得在 XML 文档中查找问题非常耗时。
是否有某种方法或工具可以帮助我查明 XML 文档中的特定 XML 元素和/或值?
【问题讨论】:
-
见Troubleshooting Common Problems with the XmlSerializer。此外,根据我的经验,来自
XmlSerializer的异常通常 do 会给出 XML 行号以及问题的解释。你有没有发生这种情况的例子吗? -
@dbc 谢谢,我阅读了该页面(其中确实有一些有趣的信息),但在我的特定情况下并没有多大用处。该异常确实告诉您出了什么问题(在我的情况下,将字符串转换为数字),但没有给您行号或字段名称。
-
我无法重现您的问题。见dotnetfiddle.net/lfnUKU。在
There is an error in XML document (X, Y)中,"(X, Y)" 是发生异常时XmlReader从 1 开始的行和字符位置。对于格式异常,阅读器已经前进到下一个标记,因此错误就在所述位置之前。
标签: c# xml serialization