0

我最近搬到了一个项目,我注意到有一个特定的要求将一些数据存储为 XML。

之前的团队使用 Castor 生成的类来对数据进行编组和解组。

我现在有一个新要求,要求我向这个 XML 添加一些额外的(但可选的)字段。然而,我意识到之前的团队据说根本没有检查过 XSD,我也无法联系到他们。

XSD 肯定是庞大而复杂的,因为它负责生成大约 50 个类。因此,再次编写 XSD 将很容易出错,并且还存在我现在可能最终创建与旧 XML 兼容的 XML 的风险。

我想到的另一种选择是使用 XML Spy 之类的工具并尝试从 XML 逆向工程 XSD,但这听起来也有点困难,因为我需要对 20 个奇怪的 XML 进行逆向工程以生成 XSD,然后合并所有这些 XSD合二为一,因为 XML 有几个可选部分。这种方法仍然可能存在错误因素。

我能想到的最佳选择是将类逆向工程为 XSD - 但是 Castor 据说不支持此功能。所以我没有办法将这些 Castor 生成的类转换回 XSD!虽然 Castor 生成的类确实有一些 Castor 特定的方法,但如果忽略 Castor 特定的方法,它们本质上就是 Pojos!

我们对从 java 类获取或生成 XSD 有什么建议吗?我们还有其他建议来解决我讨论的问题吗?

谢谢你。

4

1 回答 1

0

只是一个更新,虽然我没有达到我所寻找的 100%,但我能够使用 JAXB 的 schemagen 工具成功地对 XSD 进行逆向工程。

请注意,castor 会为每个类生成一个 XXXDescriptor,因为它不会映射到实际的 XSD,因此不会将 XXXDescriptor 类作为输入传递给 schemagen 工具。

schemagen 工具使用 getter 方法并忽略 Castor 的 validate、marshall 和 unmarshall 等方法。

因此,与我第一次发布问题时的情况相比,目前情况看起来很有希望。

谢谢。

于 2012-02-23T02:37:13.027 回答