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 ログには: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 は有効です。何か案は?

4

0 に答える 0