这是我不完全了解的第三方对象使用序列化XML的一种好方法吗?

问题描述

| 我有一个来自第三方应用程序的序列化实例数据,它是XML格式的,我想将其加载到一个对象中并使用它。 我从XML生成一个XSD,它工作得很好。 XML表示用户填写的表单的状态。第一次生成XSD时,我没有填写整个表单-表单实例是要序列化的。我回去填写了整个表单,以便显示我需要的所有控件,并创建了一个新的XSD,并使用XSD2Code生成一个新类。 问题是,如果我不知道表单本身的所有序列化形式是什么,我的方法是否从一开始就存在缺陷,或者这是我能做到的最好方法? 将接口粘贴在生成类上需要的控件上是否是减轻基础实例数据特征变化的好方法? 我现在知道,我至少需要能够处理表单中的某些内容,并且它们都存在。如果将来有更多的东西添加到表单中,我可以重新生成XSD并以已经存在的实现为基础。 这是一种合理的方法,因为我将创建一个局部类,该局部类在生成的类上指定它们至少实现我需要的东西? 您能预见到有什么会挑战我编写的与实例类中这些接口类型一起工作的代码的吗? 有没有一种方法可以使我的反序列化方法保持不变,如果有意外的事情发生,它不会中断?     

解决方法

无知通常不是最佳实践。 如果他们向您发送XML,那么他们不知道它是什么形状吗?他们没有XSD吗? 至少他们不能为您提供该格式的文档吗? 无论如何,您都需要一个XSD来表示他们实际向您发送的内容,因此您可以生成与您实际收到的内容匹配的类。甚至可能会发现它们发送给您的XML结构与任何可能的类集都不匹配,并且您将需要对“手动”进行反序列化。