如果您将 Eclipse IDE 与 Dali 插件用于 JAXB 一起使用,您可能会在控制台中收到上述错误。
如果在从 XSD 文件建立 JAXB 生成选项时取消选中面板“类生成器选项”上的“使用严格验证”,则可以避免此类错误。这样的面板是继“Java 项目”和“从模式生成类”之后的第三个面板。
添加@minjun-yu 建议的附加参数-nv也可以。您可以在标有“类生成器扩展配置”的第四个面板中设置此类参数,而不是应用我的第一个建议
在解析数据以加载 JAXB 生成的类时,如果您针对模式进行验证,您仍然可能会获得 SAXException。正如@mzywiol 和@marioosh 所指出的,在创建 SchemaFactory 时设置特殊功能可以避免异常
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// Avoid SAXParseException on maxOccurs > 5000
sf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, false);
URL xsdURL = TestParse.class.getResource(xsdLocation);
Schema schema = sf.newSchema(xsdURL);
JAXBContext ctx = JAXBContext.newInstance(MyJAXBClass.class.getPackage().getName());
Unmarshaller unmarshaller = ctx.createUnmarshaller();
unmarshaller.setSchema(schema);