我正在尝试使用Java XML API将XML文档从文件加载到Document:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(source);
但是,我收到了特定输入文档的以下异常:
org.xml.sax.SAXParseException: Premature end of file.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
...
System.err日志提到问题出在位置:3:1
,在此XML文档中是doctype声明:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
...
如果删除doctype声明,它可以正常工作。但在这种情况下我无法删除它。我该如何解决这个错误? Eclipse Bug 252787表明它可能是一个缓存问题,但我不在代理之后,并且DTD URL有效。有什么想法吗?