You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by bu...@apache.org on 2002/07/25 05:19:48 UTC
DO NOT REPLY [Bug 11156] New: -
ArrayIndexOutOfBoundsException parsing file with DOCTYPE but no body
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: xerces-j-dev@xml.apache.org
ReportedBy: idcampbell@yahoo.com
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: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org