我们使用 XSD.EXE 从 XSD 模式生成运行时类以进行 XML 序列化。架构很大并且包含许多复杂的类型和选择元素。如http://msdn.microsoft.com/en-us/magazine/cc164135.aspx中所述,选择元素生成两个字段:保存值的 Item 字段和保存生成的枚举的 ItemChoiceType 字段,定义哪个命名元素是在项目字段中。
XSD 为每个名为 ItemChoiceTypeXX 的元素名称字段创建一个唯一的枚举,其中 XX 是一个整数。XSD 根据需要创建尽可能多的 ItemChoiceTypes,并用递增的数字命名它们。
所以,我的一小部分架构看起来像:
<xsd:choice>
<xsd:element ref = "Sequence"/>
<xsd:element ref = "HandshakeId"/>
</xsd:choice>
我可以像使用生成的类一样对其进行编码,例如:
job.Item = "123";
job.ItemElementName = ItemChoiceType26.Sequence;
问题是在最初生成的类中,该元素的 ItemChoiceType 是 ItemChoiceType26。更新架构并重新生成类后,名称现在是 ItemChoiceType27。
我的问题是,随着模式随着时间的推移而更新和修订,我该如何管理它?我不控制 XSD 架构,它由供应商提供。但是,我必须更新我的代码以匹配他们所做的更改。随着时间的推移,我似乎面临着一场维护噩梦,并希望有任何建议来更好地管理这个问题。