假设我正在尝试解组具有整数字段(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));

最佳答案

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

但是,xs:int限于:


maxInclusive = 2147483647
minInclusive = -2147483648



并且xs:long限于:


maxInclusive = 9223372036854775807
minInclusive = -9223372036854775808



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

10-08 13:28