有没有办法为 xs:list 的内容(itemType)自定义 JAXB 绑定

Is there a way to customize the JAXB binding for the content (itemType) of an xs:list

有没有办法为 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 evaluation of "//xs:simpleType[@name='doubleList']/xs:list/@itemType" needs to result in an element.

有没有一种方法可以在不编写您自己的自定义适配器的情况下做到这一点?

上面的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 class:

public class DirectPositionType 
{
    @XmlValue
    protected List<BigDecimal> value;
    @XmlAttribute(name = "srsName")