【问题标题】:Castor Generated Classes (XML Marshalling) - XSD UnavailableCastor 生成的类(XML 编组)- XSD 不可用
【发布时间】:2012-02-04 16:44:50
【问题描述】:

我最近转移到一个项目,我注意到有一个特定的要求将一些数据存储为 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 有什么建议吗?我们还有什么其他建议可以解决我讨论的问题吗?

谢谢。

【问题讨论】:

    标签: xsd reverse-engineering castor jaxp


    【解决方案1】:

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

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

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

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

    谢谢。

    【讨论】:

      猜你喜欢
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      相关资源
      最近更新 更多