我想在解組時刪除命名空間前綴,我可以通過設置marshaller屬性來使用PrefixMapper更改命名空間。默認命名空間是ns2,我不想要任何前綴,但它不允許我給空白前綴值。如果我給出如下所示的空字符串,它將採用默認值。 1)jaxbMarshaller.setProperty(「com.sun.xml.internal.bind.namespacePrefixMapper」,new MyNamespaceMapper()); 1)jaxbMarshaller.setProperty(「com.sun.xml.internal.bind.namespacePrefixMapper」,new MyNamespaceMapper()); .....JAXB Marshallingremove命名空間前綴
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)如果我編輯包信息如下那麼它是好的,但問題是,我創建一個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>