0

私は最近、いくつかのデータを XML として保存するという特定の要件があることに気付いたプロジェクトに移動しました。

以前のチームは、Castor によって生成されたクラスを使用して、データをマーシャリングおよびアンマーシャリングしました。

この XML に追加の (まだオプションの) フィールドを追加する必要がある新しい要件があります。しかし、以前のチームは XSD をまったくチェックインしていなかったと思われ、彼らに連絡する方法がないことに気付きました。

XSD は確かに大規模で複雑で、約 50 のクラスを生成する必要があります。そのため、XSD を再度作成するとエラーが発生しやすくなり、古い XML と互換性のある XML を作成することになるリスクもあります。

私が考えたもう 1 つの方法は、XML Spy のようなツールを使用して、XML から XSD をリバース エンジニアリングしようとすることでしたが、XSD を生成するために 20 個の奇妙な XML をリバース エンジニアリングし、これらすべての XSD をマージする必要があるため、これも少し難しいように思えます。 XML にはいくつかのオプションのセクションがあったため、1 つにまとめられました。このアプローチでは、まだエラーの可能性があります。

私が考えることができる最良のオプションは、クラスを XSD にリバース エンジニアリングすることですが、Castor はおそらくこの機能をサポートしていません。したがって、これらの Castor 生成クラスを XSD に変換する手段がありません! Castor によって生成されたクラスにはいくつかの Castor 固有のメソッドがありますが、Castor 固有のメソッドが無視される場合、本質的にそれらは Pojo です。

Java クラスから XSD を取得または生成するための提案はありますか? 私が議論した問題を解決するための他の提案はありますか?

ありがとうございました。

4

1 に答える 1

0

探していたものを 100% 達成したわけではありませんが、JAXB の schemagen ツールを使用して XSD を正常にリバース エンジニアリングすることができました。

キャスターは各クラスで XXXDescriptor を生成することに注意してください。これは、実際の XSD にマップされないため、スキーマ生成ツールへの入力として XXXDescriptor クラスを渡さないためです。

schemagen ツールは getter メソッドで動作し、Castor の validate、marshall、unmarshall などのメソッドを無視します。

そのため、最初に質問を投稿したときの状況と比較して、この時点では非常に希望が持てるように見えます。

ありがとう。

于 2012-02-23T02:37:13.027 に答える