アンマーシャリング中に名前空間接頭辞を削除しようとしていますが、marshallerプロパティを設定してPrefixMapperを使用して名前空間を変更できました。デフォルトネームスペースはns2ですが、プレフィックスは必要ありませんが、空のプレフィックス値を与えることはできません。下のように空文字列を指定すると、デフォルト値になります。JAXB Marshallingremove名前空間プレフィックス
1)jaxbMarshaller.setProperty( "com.sun.xml.internal.bind.namespacePrefixMapper"、new MyNamespaceMapper()); .....
class MyNamespaceMapper extends NamespacePrefixMapper {
private static final String URI = "http://www.examples/webservice/";
@Override
public String getPreferredPrefix(String namespaceUri, String suggestion,
boolean requirePrefix) {
if(URI.equals(namespaceUri)) {
return "";
}
return suggestion;
}
}
2)場合は、以下のように、私は編集パッケージ情報は結構ですが、問題は、プレフィックス除去は、これらの要素に適用されていない、私は以下のように1 JAXB整数要素を作成していますということです「空」としてプレフィックスを置き換える
JAXBElement<Integer> jaxBInteger = new JAXBElement<Integer>(
new QName("http://www.example.com/", "age",""),30);
pax.setAge(jaxBInteger);
<Login Password="" Email=""/>
<Paxes>
<Pax IdPax="1">
<ns2:Age>30</ns2:Age>
</Pax>
<Pax IdPax="2">
<ns2:Age>30</ns2:Age>
</Pax>
</Paxes>
</Login>