我遵循了以下程序:
如果我使用JDK 1.8.077,那么XML将被成功解析。如果我使用任何其他JDK,如版本1.8.102或1.8.112,JAXB无法正确解析并返回元素的null
值。
有人可以在这里向我推荐这个问题吗?
答案 0 :(得分:0)
在降级到1.8.74 JAXB能够正确解析后,我可以用1.8.111确认同样的错误行为。
版本1.8.111:
JAXBContext.createUnmarshaller().unmarshal(new StreamSource(...), MyType.class).getValue()
返回null
答案 1 :(得分:0)
问题的一个可能原因是解析器期望代码为更高版本的JDK 1.8提供对XML命名空间的支持。
如果您使用基于SAX的解析器来解析XML文档,请确保将namespaceAware API设置为true
final SAXParserFactory sax = SAXParserFactory.newInstance(); sax.setNamespaceAware(真);
默认情况下,该值设置为 false
我使用JDK版本 1.8.121 &使用基于SAX的解析器 1.8.131 ,只需为SAXParserFactory实例的namespaceAware API设置值true即可解决问题。
注意:JAXB类是从eclipse生成的