0

我正在尝试使用 Java XML API 将 XML 文档从文件加载到文档中:

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 日志提到问题出在 location :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 错误 252787表明这可能是一个缓存问题,但我不在代理后面,并且 DTD URL 是有效的。有任何想法吗?

4

0 回答 0