有没有办法为xs:list自定义JAXB绑定?下面的例子:
<simpleType name="doubleList">
<list itemType="double" />
</simpleType>
将受xjc约束:List<Double>
。但是,我想将其绑定到:List<BigDecimal>
。
我的初始设置是定义这样的绑定:
<jaxb:bindings multiple="true" node="//xs:simpleType[@name='doubleList']/xs:list/@itemType">
<jaxb:property>
<jaxb:baseType name="java.math.BigDecimal" />
</jaxb:property>
</jaxb:bindings>
但是,这会产生以下问题:
XPath评估“// xs:simpleType [@ name ='doubleList'] / xs:list / @ itemType”需要生成一个元素。
有没有办法在不借助编写自己的自定义适配器的情况下执行此操作?
答案 0 :(得分:0)
上面的doubleList在其他地方使用过。在这些点上应用绑定,产生正确的Javaclass。可以肯定的是,只选择合适的基本类型就足够了。
所以在其他地方使用doubleList的地方:
<complexType name="DirectPositionType">
<simpleContent>
<extension base="gml:doubleList">
<attributeGroup ref="gml:SRSReferenceGroup" />
</extension>
</simpleContent>
</complexType>
结合
<jaxb:bindings schemaLocation="http://schemas.opengis.net/gml/3.2.1/geometryBasic0d1d.xsd" node="/xs:schema">
<jaxb:bindings multiple="true" node="//xs:complexType[@name='DirectPositionType']">
<jaxb:property>
<jaxb:baseType name="java.math.BigDecimal" />
</jaxb:property>
</jaxb:bindings>
</jaxb:bindings>
生成的Java类:
public class DirectPositionType
{
@XmlValue
protected List<BigDecimal> value;
@XmlAttribute(name = "srsName")