SAXParseException:解析doctype时文件过早结束

时间:2012-05-09 00:43:42

标签: xml xml-parsing sax doctype

我正在尝试使用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有效。有什么想法吗?

0 个答案:

没有答案