微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 XSD.exe 的多版本 C# 类/XSD

如何解决使用 XSD.exe 的多版本 C# 类/XSD

我正在使用 XSD.exe 将非常复杂的 XML 架构(XSD 文件)转换为 C# 类。然后我使用 XmlSerializer 将 XML 读入内存并处理数据。

将来,XSD 将发生变化。所以会有一个新版本。我将不得不使用 XSD.exe 创建一个新的 cs 文件。但我还是想支持旧版本的 XML 文件

解决此问题并同时支持新旧版本的 XML 文件的最佳方法是什么?显然,XSD.exe 创建的类将具有相同的名称。所以我真的不能只生成一个与 XSD.exe 并行的 cs 文件

欢迎提出任何想法。提前致谢!

解决方法

数据绑定技术(将 XSD 定义转换为强类型编程语言中的类型)在架构庞大、复杂或不断变化时绝对是一种痛苦。我强烈的建议是,找到不同的方法。我赚了很多咨询费,帮助人们从这个坑里挖出来。

使用更擅长应对变化和多样性的技术。 XSLT、XQuery、LINQ 甚至 DOM(如果必须)。 XSLT 和 XQuery 带有模式感知作为一个选项,因此您可以获得一些好处(根据模式检查您的程序代码),而无需在每次发生更改时重新构建和重新测试应用程序的沉重代价。

,

XML 数据绑定的优点是使您能够针对强类型类而不是无类型节点进行编码,但这会使版本控制变得棘手。

相关信息可以在 Liquid XML Data Binder 2021 - Getting Started 文档的“架构版本控制”部分找到。

,

感谢您的回答。

现在,我将 XSD.exe 生成的代码放在单独的命名空间中,并让它们从基类派生。

像这样,我可以使用一个或另一个类来生成/读取 XML。它现在似乎对我有用,因为如果没有新版本,架构不会改变。所做的任何更改都将放入新版本中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。