本教程针对JDK 8编写。本页面中描述的示例和实践不利用后续版本引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以了解Java SE 9及后续版本中更新的语言特性的摘要。
请参阅JDK发布说明以获取有关所有JDK版本的新功能、增强功能以及已删除或不推荐使用的选项的信息。
建议应用程序在设置其中一种新属性时捕获org.xml.sax.SAXNotRecognizedException异常,以便应用程序可以在不支持这些属性的旧版本上正常工作。例如,可下载的示例代码包含以下方法isNewPropertySupported,该方法检测示例是否在支持JDK_GENERAL_ENTITY_SIZE_LIMIT属性的JDK版本上运行:
public boolean isNewPropertySupported() { try { SAXParser parser = getSAXParser(false, false, false); parser.setProperty(JDK_GENERAL_ENTITY_SIZE_LIMIT, "10000"); } catch (ParserConfigurationException ex) { fail(ex.getMessage()); } catch (SAXException ex) { String err = ex.getMessage(); if (err.indexOf("Property '" + JDK_GENERAL_ENTITY_SIZE_LIMIT + "' is not recognized.") > -1) { //在此修补程序之前预期 debugPrint("不支持新限制属性。示例未运行。"); return false; } } return true; }
当输入文件包含导致超过限制异常的构造时,应用程序可以检查错误代码以确定失败的性质。以下错误代码定义了这些限制:
错误代码的格式如下:
"JAXP" + 组件(两位数字)+ 错误类别(两位数字)+ 序列号
因此,代码JAXP00010001表示JAXP基础解析器安全限制EntityExpansionLimit。