Search code examples
javaextendsxmlstreamreader

How to extend XMLStreamReader?


http://docs.oracle.com/javaee/5/api/javax/xml/stream/XMLStreamReader.html

I want to extend the XMLStreamReader but it's an interface.

I want to do something like:

public class GraphDataStreamReader extends XMLStreamReader{

  public GraphDataStreamReader(){
    super();
  }

  public void nextStartElement() throws XMLStreamException {
    do {
      super.next();   
    } while (!super.isStartElement());
  }
}

Other class:

XMLInputFactory factory = XMLInputFactory.newInstance();
GraphDataStreamReader streamReader = (GraphDataStreamReader) factory.createXMLStreamReader(new FileReader(xmlFile)); //returns XMLStreamReader
streamReader.next(); //method from XMLStreamReader
streamReader.nextStartElement(); //method from GraphDataStreamReader

Is this posible? If yes, then how?


Solution

  • Here is how to extend StreamReaderDelegate:

    class GraphDataStreamReader extends StreamReaderDelegate {
      public GraphDataStreamReader(XMLStreamReader reader) {
        super(reader);
      }
    
      public void nextStartElement() throws XMLStreamException {
        do {
          super.next();
        } while (!super.isStartElement());
      }
    }
    
    XMLInputFactory factory = XMLInputFactory.newInstance();
    GraphDataStreamReader streamReader = new GraphDataStreamReader(
                                     factory.createXMLStreamReader(fileInputStream));
    streamReader.next();
    streamReader.nextStartElement();