如何用JAXB编组X500Principal?

时间:2013-02-25 12:57:01

标签: jaxb marshalling

javax.security.auth.x500.X500Principal是最终的,并且(当然)没有使用JAXB注释注释?那么如何将其作为更大对象图的一部分进行编组呢?我想用它的name属性值替换它。

修改

解决方案很简单:

final class X500PrincipalXmlAdapter
extends XmlAdapter<String, X500Principal> {
    @Override public X500Principal unmarshal(String name) {
        return new X500Principal(name);
    }

    @Override public String marshal(X500Principal principal) {
        return principal.getName();
    }
}

实际上,我想知道为什么JAXB允许我使用非公共XMLAdapter类,但我当然更喜欢它。

1 个答案:

答案 0 :(得分:1)

您可以在此用例中使用XmlAdapterXmlAdapter用于将不可映射的对象转换为可映射的对象。使用XmlAdapter注释在字段/属性上配置@XmlJavaTypeAdapter