我想自定义JAXB中日期的编组。这是已经询问的question的变体。我想我会使用XMLAdapter,因为this answer问题指定。如何自定义JAXB编组(如果从XML生成JAXB bean)
但是我无法完全做到这一点,因为我反其道而行,从.XSD生成JAXB bean - 我无法将注释添加到JAXB bean,因为它们是生成的代码。
我试过调用Marshaller.setAdapter(),但没有运气。
final Marshaller marshaller = getJaxbContext().createMarshaller();
marshaller.setSchema(kniSchema);
marshaller.setAdapter(new DateAdapter());
...
private static class DateAdapter extends XmlAdapter<String, XMLGregorianCalendar> {
@Override
public String marshal(XMLGregorianCalendar v) throws Exception {
return "hello"; //Just a test to see if it's working
}
@Override
public XMLGregorianCalendar unmarshal(String v) throws Exception {
return null; // Don't care about this for now
}
}
凡我所产生的JAXB bean的相关部分看起来是这样的:
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar activeSince;
当我这样做,有什么默认日期/编组的XMLGregorianCalendar发生。就好像我没有做到这一点。
任何帮助表示赞赏。
谢谢,
查尔斯
谢谢,这工作。我是JAXB的新手,并没有意识到你可以像这样定制绑定。 – 2010-03-16 16:54:52
该java.net网站已被关闭,因此该教程URL不再起作用。该教程是否有新的URL? – 2017-09-05 19:34:44