您可以通过执行以下操作来编写自定义适配器(不使用JAXB的XmlAdapter):
1)声明一个接受各种元素并具有JAXB批注的类,并按需要处理它们(在我的示例中,我将所有内容都转换为String)
@YourJAXBAnnotationsGoHerepublic class MyAdapter{ @XmlElement // or @XmlAttribute if you wish private String content; public MyAdapter(Object input){ if(input instanceof String){ content = (String)input; }else if(input instanceof YourFavoriteClass){ content = ((YourFavoriteClass)input).convertSomehowToString(); }else if(input instanceof .....){ content = ((.....)input).convertSomehowToString(); // and so on }else{ content = input.toString(); } }}// I would suggest to use a Map<Class<?>,IMyObjToStringConverter> ...// to avoid nasty if-else-instanceof things2)在您要编组的班级中使用此类而不是E
笔记
- 当然,这 不适 用于复杂的(嵌套)数据结构。
- 您必须考虑如何再次将其解组,这可能会更加棘手。如果太棘手,请等待比我更好的建议;)



