如果您不介意 Java 类中的 BigInteger,您可以使用 type="integer" 或 type="positiveInteger"(负 userId?)。您的验证将以一定的成本进行。
另一种选择是使用 jaxb 自定义绑定。您的元素可能是:
<element name="userId" type="long"/>
并且您必须创建一个额外的绑定文件,例如
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jxb:extensionBindingPrefixes="xjc">
<jxb:bindings schemaLocation="my.xsd" node="//xs:element[@name='UserType']//xs:element[@name='userId']">
<jxb:property>
<jxb:baseType name="java.lang.Long" />
</jxb:property>
</jxb:bindings>
</jxb:bindings>
现在您可以像这样调用 xjc: xjc my.xsd -b my.xjb
这导致:
@XmlElement(required = true, type = Long.class)
protected Integer userId;