【发布时间】:2016-09-29 06:45:47
【问题描述】:
我试图在解组时删除命名空间前缀,我可以通过设置 marshaller 属性使用 PrefixMapper 更改命名空间。默认命名空间是 ns2,我不想要任何前缀,但它不允许我提供空前缀值。如果我如下给出空字符串,它将采用默认值。
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) 如果我按如下方式编辑 package-info 就可以了,但问题是我正在创建一个如下所示的 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>
【问题讨论】:
标签: xml namespaces jaxb