自分で作成したものではなく、別のパーティから受け取った XSD があります。したがって、相手との互換性を確保する必要があるため、この XSD を変更することはできません。
シンプルバインディングモードを使用してXJC 2.2およびJAXB 2.2を使用して、空のhello要素内にルート要素を作成したいと考えています。しかし、マーシャリングすると、余分な名前空間のがらくたがたくさん発生します。私には不要に見えます。(ただし、動作しますが、送信するデータが増えます...)
XSD ルート要素:
<element name="epp">
<complexType>
<choice>
<element name="greeting" type="epp:greetingType" />
<element name="hello" />
<element name="command" type="epp:commandType" />
<element name="response" type="epp:responseType" />
<element name="extension" type="epp:extAnyType" />
</choice>
</complexType>
</element>
Java コード:
Epp epp = new Epp();
epp.setHello("");
マーシャリングされた結果:
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string"></hello>
</epp>
望ましい結果:
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello />
</epp>
または:
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello></hello>
</epp>
できれば XSD を変更したり、XJC コンパイル済みクラスを手動で変更したりせずに、これを可能にする方法はありますか?