2

2 つのエンドポイントを持つ Web サービスからデータを消費しています。1 つはテスト エンドポイントで、もう 1 つは運用です (これは変更できません)。問題は、本番エンドポイントとテスト エンドポイントのルート要素に異なる「xmlns」があることです。したがって、XSD がテストで機能する場合、JAXB は prod 応答の解析に失敗し、その逆も同様です。

データは Spring RestTemplate と Jaxb2Marshaller を使用して消費されます。

テスト用のドキュメント フラグメントの例:

<element xmlns="https://example.com/test"

製品のドキュメント フラグメントの例:

<element xmlns="https://example.com/prod"

テスト/本番エンドポイントの両方からデータを消費できるようにする正しい方法は何ですか?

4

1 に答える 1

1

まず、テスト用と本番用に異なる名前空間を持つことの狂気について文句を言います。

次にhttp://blog.bdoughan.com/2012/11/applying-namespace-during-jaxb-unmarshal.htmlを確認してください。

本番 XSD からスキーマを生成します。テスト エンドポイントの場合、カスタムorg.springframework.http.converter.xml.MarshallingHttpMessageConverter.

カスタムNamespaceFilterstartElementendElementメソッドは、置き換えようとしている名前空間をチェックし、必要に応じて置き換える必要があります。

于 2013-10-02T10:23:26.447 に答える