首页 > 解决方案 > 如何使用 xsd 模式定义避免重复类型?

问题描述

我有一个客户导入符合多种标准的 XML 数据(大约 100 个 XSD 文件)。

当然,我使用 Java 和 Jaxb 来生成类,这真的很愉快(一如既往)。

我做了一些 Jaxb 绑定来重命名标签、属性等……它涵盖了我的大部分用途。

但是XSD 中的某些数据结构是重复的。

我唯一看到的是提取一些 XSD 结构并将它们放入一个通用的 XSD 中。

所以这是我的步骤:

  1. 提取专用命名空间中的一个或多个 XSD 文件中的通用数据结构(易于共享)并使用 XSDimport功能导入它们
  2. 当数据结构几乎相同时,使用 XSD 继承特性,即extension.
  3. 使用 jaxb xjc 工具生成我的新模型
  4. 为我新提取的数据结构添加正确的命名空间前缀和要导入的 XML 文件(XSLT 预处理以添加缺少的新前缀)

因为我的客户不会更改其 XML 文件,所以我必须执行第 4 步。

正确的方法确实是修改标准 XSD,但在我的情况下这是不可能的(可能需要数月或数年,或者 XSD 分析团队从未考虑过......)

主要缺点是:

主要优点是您不必复制代码......在我的情况下,它真的加倍努力(至少)。

现在我的问题是有人有更好的方法来处理这个用例吗?.

谢谢大家。

标签: javaxmlxsdjaxb

解决方案


推荐阅读