我有一个WSDL文件,引用了一个XSD文件,其中包含gYearMonth
类型的元素。我无法改变它。我想使用JAXB自动生成具有Joda-time库类型YearMonth
的成员的类。
我看到文章JAXB and Joda-Time: Dates and Times非常有趣,但我有兴趣从WSDL到Java而不是从Java到WSDL实现这种绑定。
我创建了我的XmlAdapter
(是的,这里没有巫术):
import org.joda.time.YearMonth;
public class YearMonthAdapter extends XmlAdapter<String,YearMonth> {
@Override public YearMonth unmarshal(String v) throws Exception {
return new YearMonth(v);
}
@Override public String marshal(YearMonth v) throws Exception {
return v.toString();
}
}
但是我在bindings.xml
注册的位置和方式是什么,以便在生成代码时获得YearMonth
而不是XMLGregorianCalendar
?
答案 0 :(得分:1)
从XML Schema生成Java模型时,可以使用如下所示的绑定文件挂钩XmlAdapter
。
<jxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1">
<jxb:bindings schemaLocation="format.xsd">
<jxb:bindings node="//xs:element[@name='number']">
<jxb:property>
<jxb:baseType>
<jxb:javaType name="java.lang.Integer"
parseMethod="blog.xmladapter.bindings.NumberFormatter.parseInt"
printMethod="blog.xmladapter.bindings.NumberFormatter.printInt" />
</jxb:baseType>
</jxb:property>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
了解更多信息