package edu.harvard.i2b2.crc.loader.xml;
import java.io.FileReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.stream.EventFilter;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.junit.Test;
import edu.harvard.i2b2.common.util.jaxb.JAXBUtil;
import edu.harvard.i2b2.crc.datavo.i2b2message.BodyType;
public class StaxParser {
@Test
public void start() throws Exception {
XMLInputFactory xmlif = XMLInputFactory.newInstance();
FileReader fr = new FileReader("testfiles/stax.xml");
XMLEventReader xmler = xmlif.createXMLEventReader(fr);
EventFilter filter = new EventFilter() {
public boolean accept(XMLEvent event) {
return event.isStartElement();
}
};
XMLEventReader xmlfer = xmlif.createFilteredReader(xmler, filter);
// Jump to the first element in the document, the enclosing BugCollection
StartElement e = (StartElement) xmlfer.nextEvent();
System.out.println(e.getName().getLocalPart());
JAXBContext ctx = JAXBContext.newInstance("edu.harvard.i2b2.crc.datavo.i2b2message");
Unmarshaller um = ctx.createUnmarshaller();
int bugs = 0;
while (xmlfer.peek() != null) {
Object o = um.unmarshal(xmler);
if (o instanceof BodyType) {
BodyType bi = (BodyType) o;
System.out.println("QueryDefinitionRequestType found....");
// process the bug instance
bugs++;
}
}
//assertEquals(180, bugs);
fr.close();
}
public static void main(String args[]) throws Exception {
StaxParser p = new StaxParser();
p.start();
}
}