如果是使用Ibatis内置的XPathParser的构造方法时,出现的这个错误,则有四种解决方案。
一、也是我最终使用的方法。不远程下载DTD,使用内置的EntityResolver代替,查看XPathParser的源码,可以发现有非常多的构造方法。选择取其中一个含有EntityResolver的构造方法使用可以避免远程访问DTD:
使用Reader配合EntityResolver创建XPathParser:
Reader reader = Resources.getResourceAsReader("yourxml.xml");
XPathParser xPathParser = new XPathParser(reader, true, (Properties)null, new XMLMapperEntityResolver());
二、来源网络未经本人测试:将xml文件移动至resources目录下。
三、来源网络未经本人测试:使用jaxp.properties
// 在%JAVA_HOEE%\jre\lib\ 目录下,新建文件jaxp.properties,内容:
javax.xml.accessExternalSchema=all
javax.xml.accessExternalDTD=all
四:来源网络未经本人测试:Fetch external resource