假设我正在尝试使用整数字段(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));
答案 0 :(得分:2)
xs:integer
不受限制,可以是任意长度的值
可比较的Java类型是BigInteger
。
xs:int
仅限于:
maxInclusive = 2147483647 minInclusive = -2147483648
而xs:long
仅限于:
maxInclusive = 9223372036854775807 minInclusive = -9223372036854775808
因此,如果您希望XML Schema Validator检查值范围,请使用相应的类型。