Xml SAXParseException:解析doctype时文件过早结束
我正在尝试使用Java XML API将XML文档从文件加载到文档中:Xml SAXParseException:解析doctype时文件过早结束,xml,xml-parsing,sax,doctype,Xml,Xml Parsing,Sax,Doctype,我正在尝试使用Java XML API将XML文档从文件加载到文档中: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(source); 但是,对于特定的输入文档,我得到了以下异常: org.xml.sax.SAXParseException: Premature en
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声明,它可以正常工作。但在这种情况下,我无法删除它。我如何避免这个错误?这可能是缓存问题,但我不支持代理,DTD URL是有效的。有什么想法吗?没有关闭标记结果是我检查了错误的文件,它根本没有任何根元素。要提供帮助,请尝试设置
DocumentBuilderFactory.setValidating(true)
(
没有结束标记。)嗯,是的,原因是错误的:(通常与我相反。:D