データバインディングメソッドとしてXMLBeansを使用してAxis2フレームワークを使用してクライアントを生成しました。XSDスキーマは次のとおりです。
<xsd:schema>
<xsd:element name="profile" type="anyType"/>
</xsd:schema>
SOAPリクエストの一部として生成されるJavaオブジェクトには、プロファイルの取得と設定を可能にするgetterメソッドとsetterメソッドが含まれています。メソッドのシグネチャは次のとおりです。
requestDocument.setProfile(XmlObject profile);
問題は、有効なXMLドキュメントではなく、プロファイルとして複数のノードを渡す必要がある場合でも、XMLObjectはルートノードを持つXMLドキュメントを想定していることです。
私は合格する必要があります:
<accounts></accounts>
<payees></payees>
実際、私が使用するサービスはこれらのノードを想定していますが、スキーマでそれらを制約していません。したがって、サービスが例外をスローしなくてもプロファイルを使用できないため、別のルートノードを追加することはできません。
XMLBeansは、基になるXMLツリーをすでに追加しています。つまり、リクエストドキュメントのプロファイルノードです。したがって、ルートノードとして使用することはできません。ルートノードを追加すると、次のXMLが作成されます
<profile>
<profile></profile>
</profile>
そして、ドキュメントを次のようにフォーマットしたいと思います。
<profile>
<accounts></accounts>
<payees></payees>
</profile>
サービスのスキーマを変更したくない。Axis2/XMLBeansでこの問題に取り組む方法があるかどうか知りたいです。