0
请考虑以下情形。我们有一个定义技术文档交换格式的XSD文件(一个根类型由几个complexTypes
组成)。
此外,还有一个规范定义了每个字段的值范围和格式。XmlSerializer:XSD生成的类序列化问题
显然,两个文档都是由不同的部门创建的,因为格式的定义是不同的。例如。
- XSD:时间是由XML类型表示时间(
XmlSerializer
格式:HH:MM:SS.FFF) - 规格文档:以下格式必须用于时间HH:mm。
技术上讲,事情很简单。我们使用XSD.exe来生成类。但是现在输出文件在使用XmlSerializer
后看起来不同。没有机会就格式进行谈判,因为它是由于影响整个市场的规则而产生的,因此也影响了很多交易对手。
正如我们必须假设的那样,规范文档的格式需要得到尊重。所以我一直在寻找可以确保这一点的选项。
- 添加和实现
IXmlSerializable
接口受影响complexTypes
的生成的类。
不幸的是,这不是一个选项,因为XmlSerializer
的初始化引发了一个异常:“有反映类型的错误。”
或者有什么办法可以避免这种情况?实现根类型的接口不是一种选择,因为它非常大且复杂。 - 找到一个序列化库,其中可以提供某种类型的格式映射,以便可以实现字段中的自定义格式。
现在,我没有找到像这样的东西。但也许有人可以给我提示。 - 序列化后通过
XPathNavigator
修改节点的字符串内容。
不是最好的方法,但它会完成这项工作。 - 在生成输出中直接修改生成的类并添加一些代理属性。
实际上不是最好的想法,因为重新生成(由于新版本的XSD文件)会覆盖所有修改。不幸的是,属性不能在partial class
中重新定义,对吧?
我已经按照首选项的顺序排列了列表。
所以我错过了一个选项?你会走哪条路?
我知道这不是典型的如何使用class xyz问题,但我仍然希望,你可以给我提示,通常如何处理这样的场景。