Castor生成的类(XML编组) - XSD不可用

问题描述:

我最近转移到一个项目,我发现有一个特定的需求来将一些数据存储为XML。Castor生成的类(XML编组) - XSD不可用

之前的团队使用Castor为Marshall和Unmarshall生成的类数据。

我现在有一个新的要求,那就是要求我为这个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吗?我们是否有其他建议来解决我所讨论的问题?

谢谢。

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

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

schemagen工具使用getter方法,并忽略像Castor的验证,马歇尔和unmarshall方法。

因此,与我第一次发布问题时所处的情况相比,事情看起来非常有希望。

谢谢。