StAX XMLStreamReader:
StAX XMLStreamReader class provides a Cursor style API which facilitates iteration over events. It is used for reading the XML documents.
Methods of StAX XMLStreamReader:
1.	int next(): It is used to retrieve next event.
2.	boolean hasNext(): It is used to check further events exists or not.
3.	String getText(): It is used to get text of an element.
4.	String getLocalName(): It is used to get name of an element. 
Commonly used XML Stream Events:
1.	ATTRIBUTE
2.	CHARACTERS
3.	COMMENT
4.	END_DOCUMENT
5.	END_ELEMENT
6.	ENTITY_DECLARATION
7.	ENTITY_REFERENCE
8.	NAMESPACE
9.	NOTATION_DECLARATION
10.	PROCESSING_INSTRUCTION
11.	SPACE
12.	START_DOCUMENT
13.	START_ELEMENT
Example:
classNew.xml
| <?xml version="1.0" ?> <class> <student name="Rajesh Garg"></student> <student name="Harish Kansal"></student> </class> | 
StaxTest.java
| import java.io.FileReader; import java.io.Reader; import javax.xml.namespace.QName; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamReader; /** * This class is used to read XML elements using Stax parser. * @author w3schools */ public class StaxTest { public static void main(String args[]){ try { //File Path String filePath = "D:\\classNew.xml"; //Read XML file. Reader fileReader = new FileReader(filePath); //Get XMLInputFactory instance. XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); //Create XMLStreamReader object. XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(fileReader); //Iterate through events. while(xmlStreamReader.hasNext()){ //Get integer value of current event. int xmlEvent = xmlStreamReader.next(); //Process start element. if (xmlEvent == XMLStreamConstants.START_ELEMENT) { System.out.println("Start Element: " +xmlStreamReader.getLocalName()); int attributes = xmlStreamReader.getAttributeCount(); for(int i=0; i<attributes; i++){ QName name = xmlStreamReader.getAttributeName(i); String value=xmlStreamReader.getAttributeValue(i); System.out.println("Attribute name: " + name); System.out.println("Attribute value: " + value); } } //Process end element. if (xmlEvent == XMLStreamConstants.END_ELEMENT) { System.out.println("End Element: " +xmlStreamReader.getLocalName()); } } } catch (Exception e) { e.printStackTrace(); } } } | 
Output:
| Start Element: class Start Element: student Attribute name: name Attribute value: Rajesh Garg End Element: student Start Element: student Attribute name: name Attribute value: Harish Kansal End Element: student End Element: class | 
Download this example.
 
Next Topic: Java StAX XMLStreamWriter example.
Previous Topic: Java StAX XMLEventWriter example.