Java 8 jaxb-runtime-2.3.0 java.lang.NumberFormatException:不是一个n│;编号:未定义

Java 8 jaxb-runtime-2.3.0 java.lang.NumberFormatException:不是一个n│;编号:未定义,java-8,jaxb,xmladapter,Java 8,Jaxb,Xmladapter,虽然我见过其他非常类似的问题,但我还没有找到一个能给我一个正确答案的问题 我有这样的XML <w id="103" start="0" duration="0" /> │ <w id="undefined" sta

虽然我见过其他非常类似的问题,但我还没有找到一个能给我一个正确答案的问题

我有这样的XML

<w id="103" start="0" duration="0" />                                                                                                                                       │
<w id="undefined" start="0" duration="0" />
在另一篇文章中,我需要创建一个XmlAdapter,但我不确定是什么类,以及如何将其放入现有代码中


我想做的是忽略那些id=“undefined”的行,而不拒绝导致丢失数据的整个请求。

如果属性可能未定义,为什么不将其设置为可选属性(在模式中)?它应该具有相同的效果:
。在JAXB中,如果没有在XML文档中指定字段,则该字段将仅为null,并且使用正确的模式进行解组应该会成功。。。。并确保XML中没有id属性,这意味着它是未定义的。实际上,找到的值是作为字符串id=“未定义”的“未定义”。我需要的是一种识别字符串“undefined”的方法,忽略整个实体,而不是生成NumberFormatException。我的意思是在源代码处解决问题。因为使用这个特殊的“未定义”值是不好的XML实践,因为它违反了XML模式,所以我推荐与XML模式兼容的替代方案:确保首先生成XML的人在XML中不包含任何“未定义”的“id”属性。并修改模式以将属性标记为
可选
。这样,就不再存在解组问题,XML模式验证工作正常,在Java代码中,您只需检查字段是否为null,就可以知道它是否未定义。感谢@CyrilDangerville,我同意在源代码处进行修复,我们做到了,我们的客户可能需要数周时间才能获得所有级别或批准,以便在他们的机器和实验室上继续更新应用程序。在这段时间里,他们散播数据,他们不高兴。在所有客户端升级其安装之前,从服务器端解决问题可以让我们的客户满意,因为他们不会丢失数据。这个问题是针对一个非常特殊的场景,我们的QA部门忽略了这个场景,因为它是我们至今很少使用的模块的一部分。。
  <xs:attribute name="id" use="required" type="xs:int"/>
 java.lang.NumberFormatException: Not a number: undefined

   at com.sun.xml.bind.DatatypeConverterImpl._parseInt(DatatypeConverterImpl.java:125) [jaxb-runtime-2.3.0.jar:2.3.0]