jaxb XML,当XML的整数值为>时不抛出异常。 Java Long的最大价值

时间:2018-05-22 22:58:53

标签: java jaxb unmarshalling javax.xml

假设我正在尝试使用整数字段(xs:integer)解组XML文件:  13131546456131653154156415616

此值> Java Long的最大值。

当Jaxb试图解组它时,我希望得到并发现异常。

相反,没有异常,我的pojo的object.Value被设置为null。

有没有办法检测何时发生这种情况并记录下来?

我尝试过使用vec,但它没有任何结果(空列表):

    ValidationEventCollector vec = new ValidationEventCollector();

    JAXBContext jaxbContext = JAXBContext.newInstance(MyPojo.class);
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    jaxbUnmarshaller.setEventHandler(vec);
    System.out.println(vec.getEvents().length);
   MyPojo model = (MyPojo) jaxbUnmarshaller.unmarshal(new FileInputStream(file));

1 个答案:

答案 0 :(得分:2)

xs:integer不受限制,可以是任意长度的值 可比较的Java类型是BigInteger

然而,

xs:int仅限于:

maxInclusive = 2147483647
minInclusive = -2147483648

xs:long仅限于:

maxInclusive = 9223372036854775807
minInclusive = -9223372036854775808

因此,如果您希望XML Schema Validator检查值范围,请使用相应的类型。