问题描述
我尝试如下设置前缀,
// Create JAXB Context
JAXBContext jaxbContext = JAXBContext.newInstance(ResultDetails.class);
// Create Marshaller
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty("com.sun.xml.internal.bind.namespacePrefixMapper",new NamespacePrefixMapper() {
@Override
public String getPreferredPrefix(String namespaceUri,String suggestion,boolean requirePrefix) {
if (TPTConstant.NAMESPACE_SIMPLE_RESULTS.equals(namespaceUri)) {
return "psr";
}
return suggestion;
}
});
但是从setProperty中,我得到了一个属性异常com.sun.xml.internal.bind.namespacePrefixMapper
我正在使用Java 8,并且已经在依赖项中看到jaxb-api 2.3.1。我在这里想念什么?
在ResultDetails下,我已经在每个属性级别中定义了以下内容。 @XmlElement(namespace =“ http://www.mycompany.com/services/SimpleResults/data/abc”
解决方法
使用属性名称为com.sun.xml.bind.namespacePrefixMapper的方法,