Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8152530

NullPointerException when xmlns=""

XMLWordPrintable

    • b141
    • generic
    • generic

      FULL PRODUCT VERSION :
      Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
      Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

      Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
      Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows [Version 10.0.10586]

      A DESCRIPTION OF THE PROBLEM :
      NullPointerException when running the Java code to split the XML (*2) file having xmlns="" as in W3C specification (*1).

      *1 https://www.w3.org/TR/xml-names11/#defaulting
      *2 Confirmed as valid with https://validator.w3.org/check

      FYI: http://stackoverflow.com/questions/36122097/stax-nullpointerexception-at-xmlns

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the java code against the XML below.

      <?xml version="1.0" encoding="UTF-8"?>
      <EntityList>
        <Entity xmlns="">
        </Entity>
        <Entity xmlns="">
        </Entity>
      </EntityList>

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      No NullPointerException
      ACTUAL -
      NullPointerException

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      JAXP: find factoryId =javax.xml.stream.XMLInputFactory
      JAXP: loaded from fallback value: com.sun.xml.internal.stream.XMLInputFactoryImpl
      JAXP: created new instance of class com.sun.xml.internal.stream.XMLInputFactoryImpl using ClassLoader: null
      JAXP: find factoryId =javax.xml.transform.TransformerFactory
      JAXP: loaded from fallback value: com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
      JAXP: created new instance of class com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl using ClassLoader: null
      ERROR: ''
      Exception in thread "main" javax.xml.transform.TransformerException: java.lang.NullPointerException
          at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
          at stax.cursor.Demo.main(Demo.java:24)
      Caused by: java.lang.NullPointerException
          at com.sun.org.apache.xml.internal.serializer.NamespaceMappings.pushNamespace(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToStream.startPrefixMapping(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.emitFirstTag(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.flush(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.startElement(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.handleStartElement(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.bridge(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.parse(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
          ... 3 more
      ---------
      java.lang.NullPointerException
          at com.sun.org.apache.xml.internal.serializer.NamespaceMappings.pushNamespace(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToStream.startPrefixMapping(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.emitFirstTag(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.flush(Unknown Source)
          at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.startElement(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.handleStartElement(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.bridge(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.StAXStream2SAX.parse(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
          at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
          at stax.cursor.Demo.main(Demo.java:24)

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      import java.io.File;
      import java.io.FileReader;
      import javax.xml.stream.XMLInputFactory;
      import javax.xml.stream.XMLStreamConstants;
      import javax.xml.stream.XMLStreamReader;
      import javax.xml.transform.Transformer;
      import javax.xml.transform.TransformerFactory;
      import javax.xml.transform.stax.StAXSource;
      import javax.xml.transform.stream.StreamResult;

      public class Demo {

          public static void main(String[] args) throws Exception {
              XMLInputFactory xif = XMLInputFactory.newInstance();
              XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml"));
              xsr.nextTag(); // Advance to statements element
              long count = 1;
              TransformerFactory tf = TransformerFactory.newInstance();
              Transformer t = tf.newTransformer();
              while(xsr.nextTag() == XMLStreamConstants.START_ELEMENT && xsr.getLocalName().toString().equals("Entity")) {
                  File file = new File("out/" + java.lang.Long.valueOf(count++) + ".xml");
                  t.transform(new StAXSource(xsr), new StreamResult(file));
              }
          }
      }
      ---------- END SOURCE ----------

            joehw Joe Wang
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: