This tip shows an example of how to use the Iterator API to read from an XML file:
import javax.xml.stream.*;
import javax.xml.stream.events.*;
import java.io.*;
public class StAXBasicEventReader{
public StAXBasicEventReader(){}
public static void main(String[] args)
{
XMLInputFactory XMLif=null;
XMLEventReader XMLer=null;
System.setProperty("javax.xml.stream.XMLInputFactory",
"com.sun.xml.stream.ZephyrParserFactory");
//get an XMLInputFactory object
XMLif=XMLInputFactory.newInstance();
//setting the XMLInputFactory corectly
XMLif.setProperty("javax.xml.stream.isSupportingExternalEntities",Boolean.TRUE);
XMLif.setProperty("javax.xml.stream.isNamespaceAware",Boolean.TRUE);
XMLif.setProperty("javax.xml.stream.isReplacingEntityReferences",Boolean.TRUE);
//getting an XMLEventReader object
try{
XMLer=XMLif.createXMLEventReader(
"file:///C://Data_Local//xml//docs//",
new FileReader("C://Data_local
//xml//docs//AirWings_xml.xml"));
}catch(java.io.FileNotFoundException e)
{System.out.println(e.getMessage());
}catch(javax.xml.stream.XMLStreamException e)
{System.out.println(e.getMessage());}
//getting the events
try{
while(XMLer.hasNext())
{
XMLEvent event=XMLer.nextEvent();
//XMLEvent event=(XMLEvent)XMLer.next();
int event_type=event.getEventType();
switch(event_type)
{
case XMLStreamConstants.START_DOCUMENT:
System.out.println(">Start-Document<"+"Code:"+event_type);
break;
case XMLStreamConstants.END_DOCUMENT:
System.out.println(">End-Document<"+"Code:"+event_type);
break;
case XMLStreamConstants.START_ELEMENT:
System.out.println(">Start-Element<"+"Code:"+event_type);
break;
//...
}
}
//clean up
XMLer.close();
}catch(javax.xml.stream.XMLStreamException e)
{System.out.println(e.getMessage());}
}
}