You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by sri kumar <sr...@yahoo.co.in> on 2009/12/04 13:18:28 UTC

External entity in XML causing null pointer exception during DocumentBuilder.parse

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.java: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);


i was able to find the workaround  if i add this code

 aFactory.setFeature("http://apache.org/xml/features/dom/defer-node-expansion", false);

the issue is resolved. But i need to know the cause of this problem. Was the entity the cause?

Thanks
Sri kumar


      The INTERNET now has a personality. YOURS! See your Yahoo! Homepage. http://in.yahoo.com/

Re: External entity in XML causing null pointer exception during DocumentBuilder.parse

Posted by Michael Glavassevich <mr...@ca.ibm.com>.
I already responded to you. See [1].

[1] http://markmail.org/message/2qzf4yeeg5iy5o7e.

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: mrglavas@ca.ibm.com
E-mail: mrglavas@apache.org

sri kumar <sr...@yahoo.co.in> wrote on 12/04/2009 07:18:28 AM:

> 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.java: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);
>
> i was able to find the workaround  if i add this code
>
>  aFactory.setFeature
("http://apache.org/xml/features/dom/defer-node-expansion
> ", false);
>
> the issue is resolved. But i need to know the cause of this problem.
> Was the entity the cause?
>
> Thanks
> Sri kumar