DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11156>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11156 ArrayIndexOutOfBoundsException parsing file with DOCTYPE but no body Summary: ArrayIndexOutOfBoundsException parsing file with DOCTYPE but no body Product: Xerces2-J Version: 2.0.2 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Minor Priority: Other Component: DOM AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] If you try to parse an XML file that consists solely of an XML decl and doctype (but no root element or anything else) you get an ArrayIndexOutOfBoundsException. This only happens if you have set an EntityResolver. Reproducable with test class below. JDK version is 1.4.0. Thanks. ---------- import org.apache.xerces.parsers.DOMParser; import java.io.Reader; import java.io.StringReader; import org.xml.sax.InputSource; import org.xml.sax.EntityResolver; public class TestXerces { static String testCase = new String( "<?xml version=\"1.0\" encoding=\"US-ASCII\"?>" + "<!DOCTYPE bob PUBLIC \"-//TEST//DTD TEST DTD//EN\" \"\">" ); public static void main(String args[]) throws Throwable { Reader r = new StringReader(testCase); InputSource in = new InputSource(r); DOMParser parser = new DOMParser(); parser.setEntityResolver(new EntityResolver() { public InputSource resolveEntity (String publicId, String systemId) { return new InputSource(new StringReader("<!ELEMENT foo EMPTY>")); } }); parser.parse(in); System.exit(0); } } ----------------- java.lang.ArrayIndexOutOfBoundsException at org.apache.xerces.impl.dtd.DTDGrammar.endParameterEntity (DTDGrammar.java:503) at org.apache.xerces.impl.dtd.XMLDTDProcessor.endParameterEntity (XMLDTDProcessor.java:732) at org.apache.xerces.impl.XMLDTDScannerImpl.endEntity (XMLDTDScannerImpl.java:523) at org.apache.xerces.impl.XMLEntityManager.endEntity (XMLEntityManager.java:1228) at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load (XMLEntityManager.java:3275) at org.apache.xerces.impl.XMLEntityManager$EntityScanner.load (XMLEntityManager.java:3281) at org.apache.xerces.impl.XMLEntityManager$EntityScanner.skipSpaces (XMLEntityManager.java:2930) at org.apache.xerces.impl.XMLDTDScannerImpl.skipSeparator (XMLDTDScannerImpl.java:1901) at org.apache.xerces.impl.XMLDTDScannerImpl.scanDecls (XMLDTDScannerImpl.java:1876) at org.apache.xerces.impl.XMLDTDScannerImpl.scanDTDExternalSubset (XMLDTDScannerImpl.java:304) at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch (XMLDocumentScannerImpl.java:835) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument (XMLDocumentFragmentScannerImpl.java:333) at org.apache.xerces.parsers.DTDConfiguration.parse (DTDConfiguration.java:524) at org.apache.xerces.parsers.DTDConfiguration.parse (DTDConfiguration.java:580) at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152) at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:253) at TestXerces.main(TestXerces.java:26) Exception in thread "main" Process exited with exit code 1. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
