开发者

External entity in XML causing null pointer exception during DocumentBuilder.parse("file");

I was trying to parse a XML Document using DOM Parser.

I got null pointer exception while executing doc = builder.parse(xmlDataFile);

There were few entities in the XML data file. On removing a particular entity, i was able to parse the file successfully

The entity was some thing like this

<!ENTITY SAMPLE.TIF SYSTEM "SAMPLE.TIF" NDATA TIF>

What could be the reason?

EDIT:

Here is the code:

        DocumentBuilderFactory aFactory = DocumentBuilderFactory.newInstance();
        aFactory.setValidating(false);
        aFactory.setFeature("http://xml.org/sax/features/namespaces", false);
        aFactory.setFeature("http://apache.org/xml/features/validation/schema", false);
        aFactory.setIgnoringComments(true);
        builder = aFactory.newDocumentBuilder();
        doc = builder.parse(xmlDataFile);

This is the trace:

 at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.setChunkIndex(DeferredDocumentImpl.java:1944)
    at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.appendChild(DeferredDocumentImpl.java:644)
    at com.sun.org.apache.xerces.internal.parsers.AbstractDOMParser.characters(AbstractDOMParser.java:1191)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.characters(XMLDTDValidator.java:862)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:463)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.jav开发者_开发百科a:107)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)
    at XMLParser.Parse(XMLParser.java:89)
    at Main.main(Main.java:116)

89 line number points to -> doc = builder.parse(xmlDataFile);


Solution . But the reason for the error is really unknown as the solution never states what went wrong. :(


THis is a bug in Xerces that is fixed with version 2.9.1

https://issues.apache.org/jira/browse/XERCESJ-977

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜