I am trying to remove namespace prefix while unmarshalling, I was able to change the namespace using PrefixMapper by setting marshaller property. Default namespace is ns2, I don't want any prefix, but it is not allowing me to give empty prefix value. If I give empty string as below it is taking default value.
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) If I edit package-info as below then it is fine, but issue is that I am creating one JAXB Integer Element as below, prefix removal is not applying on these elements
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>