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

StAX produces the wrong event stream

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 8
    • Fix Version/s: 9
    • Component/s: xml
    • Subcomponent:
    • Resolved In Build:
      b143
    • CPU:
      generic
    • OS:
      generic

      Description

      The default StAX parser does not produce the correct events when the input document is:

      <?xml-stylesheet href="bar.xsl" type="text/xsl"?>
      <foo/>

      In this case, the XMLStreamReader (com.sun.xml.internal.stream.XMLInputFactoryImpl) starts on a PROCESSING_INSTRUCTION event. Instead, it should start on a START_DOCUMENT event.

       From JSR 173, 1.0, Section 5.1, XMLStreamReader:
      "At any moment in time an XMLStreamReader instance has a current event that the methods of the interface access. Instances are created in the START_DOCUMENT state and this is set to the current event type."

      Here is a reproducer:

      ---------- BEGIN SOURCE ----------
      import java.io.StringReader;

      import javax.xml.stream.XMLInputFactory;
      import javax.xml.stream.XMLStreamConstants;
      import javax.xml.stream.XMLStreamReader;

      public class TestStAX {

         public static void main(String[] args) throws Exception {
             String xml = "<?xml-stylesheet href=\"bar.xsl\" type=\"text/xsl\"?>" +
                          "<foo/>";
             XMLInputFactory factory = XMLInputFactory.newFactory();

             // class com.sun.xml.internal.stream.XMLInputFactoryImpl
             System.err.println(factory.getClass());
             XMLStreamReader reader = factory.createXMLStreamReader(new StringReader(xml));

             // prints false, should print true
             System.err.println(reader.getEventType() == XMLStreamConstants.START_DOCUMENT);

             // prints true, should print false
             System.err.println(reader.getEventType() == XMLStreamConstants.PROCESSING_INSTRUCTION);

             // From JSR 173, 1.0, Section 5.1, XMLStreamReader:
             // "At any moment in time an XMLStreamReader instance has a current event that the
             // methods of the interface access. Instances are created in the START_DOCUMENT
             // state and this is set to the current event type."
         }

      }
      ---------- END SOURCE ----------




        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                joehw Joe Wang
                Reporter:
                jspiegel Josh Spiegel
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: