I get NPE in Xerces 1.2.1, 1.2.3, and 1.4.3 when attempting to parse the
following stripped-down test-case XML document:
<?xml version="1.0"?>
<!DOCTYPE root SYSTEM "root.dtd"
[
<!ENTITY a PUBLIC "a" "a.ent">
]>
<root/>
The "root.dtd" contains a single line:
<!ELEMENT root EMPTY>
The exact stack trace is:
java.lang.NullPointerException
at org.apache.xerces.utils.StringPool.addSymbol(StringPool.java:349)
at
org.apache.xerces.readers.DefaultEntityHandler.addExternalEntityDecl(Default
EntityHandler.java:226)
at
org.apache.xerces.framework.XMLDTDScanner.scanEntityDecl(XMLDTDScanner.java:
2800)
at
org.apache.xerces.framework.XMLDTDScanner.scanDecls(XMLDTDScanner.java:1450)
at
org.apache.xerces.framework.XMLDTDScanner.scanDoctypeDecl(XMLDTDScanner.java
:1123)
at
org.apache.xerces.framework.XMLDocumentScanner.scanDoctypeDecl(XMLDocumentSc
anner.java:2145)
at
org.apache.xerces.framework.XMLDocumentScanner.access$0(XMLDocumentScanner.j
ava:2100)
at
org.apache.xerces.framework.XMLDocumentScanner$PrologDispatcher.dispatch(XML
DocumentScanner.java:831)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.
java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
I believe the DefaultEntityHandler.addExternalEntityDecl is faulty.
As I compose documents from many entities, being unable to parse them is a
show-stopper for me. (I can't switch to other XML parser, as I use FOP, and
it works with Xerces only...)
Attila.
smime.p7s