C#进行Xml序列化时,常常出现XmlSerialize Error,显示There was an error serializing Xml Document。本经验介绍这种问题的调试方法,和Xml序列化非法字符(InvalidXmlChar)问题的解决方法。
工具/原料
Visual Studio 2015
方法/步骤
2
捕获异常后,通过e.Message,e.GetType等能得到一般的信息,但是对于很多错误都会简单的显示There was an error.....为了知道具体出错位置,需要显示e.InnerException。其含有StackTrace用来显示错误调用栈。
3
显示内部信息后,如果是如图类似的情况,发现出错发生在InvalidXmlChar,那么是序列化内容含有Xml不容许的字符造成。
4
为了解决这个问题,需要编写如图所示函数,用来替换将要序列化对象的非法字符。
5
对于可能出现非法字符的string类型字段,调用刚才写的函数。如果这样可能会缺少信息,必要的话可以再保存原始字符串的base64版本。
注意事项
还有以类常见错误是,被序列化的对象没有不含参数的构造函数。序列化对象的各个字段必须有默认值。