Skip to content

Instantly share code, notes, and snippets.

@nraychaudhuri
Created December 14, 2012 22:07
Show Gist options
  • Save nraychaudhuri/4289102 to your computer and use it in GitHub Desktop.
Save nraychaudhuri/4289102 to your computer and use it in GitHub Desktop.
Jaxb with Stax parser
import static javax.xml.stream.XMLStreamConstants.CHARACTERS;
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
import static javax.xml.stream.XMLStreamConstants.END_DOCUMENT;
import java.io.FileOutputStream;
import java.io.FileReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import generated.*;
public class ChunkReadWrite {
public static void main(String[] args) throws Exception {
String inFile = args[0];
// set up a StAX reader
XMLInputFactory xmlif = XMLInputFactory.newInstance();
XMLStreamReader xmlr = xmlif.createXMLStreamReader(new FileReader(inFile));
//set up JAXB context
JAXBContext jaxbContext = JAXBContext.newInstance(Programs.Program.class);
Unmarshaller um = jaxbContext.createUnmarshaller();
// move to the root element and check its name.
xmlr.nextTag();
xmlr.require(START_ELEMENT, null, "on");
while (xmlr.getEventType() != END_DOCUMENT) {
System.out.println("Tag name " + xmlr.getLocation());
if(xmlr.getEventType() == START_ELEMENT && xmlr.getLocalName() == "program") {
xmlr.require(START_ELEMENT, null, "program");
Programs.Program contact = (Programs.Program) um.unmarshal(xmlr);
System.out.println(">>> Title " + contact.getTitles().getTitle().get(0).getValue());
} else {
xmlr.next();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment