import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
public class StaXParser {
static final String ENTRY = "entry";
static final String CANFORM = "canForm";
static final String ABBREV = "abbrev";
static final String SYNONYM = "depSynonym";
static final String MONO = "mono";
static final String CROSSREFER = "crossRefer";
static final String KEYDC = "keyDC";
@SuppressWarnings({ "unchecked", "null" })
public List<SAPTerm> readConfig(String configFile) {
List<SAPTerm> terms = new ArrayList<SAPTerm>();
try {
// First create a new XMLInputFactory
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
// Setup a new eventReader
InputStream in = new FileInputStream(configFile);
XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
// Read the XML document
SAPTerm term = null;
SAPTermMono mono = null;
SAPTermCrossRefer crossRefer = null;
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
// StartElement startElement = ;
// If we have a item element we create a new item
StartElement startElement = event.asStartElement();
// If we have a item element we create a new item
if (startElement.getName().getLocalPart() == (ENTRY)) {
term = new SAPTerm();
continue;
}
// mono
if (startElement.getName().getLocalPart() == (MONO)) {
mono = new SAPTermMono();
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (SYNONYM)) {
event = eventReader.nextEvent();
mono.addDepSynonym(event.asCharacters().getData());
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (ABBREV)) {
event = eventReader.nextEvent();
mono.addAbbrevs(event.asCharacters().getData());
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (CROSSREFER)) {
crossRefer = new SAPTermCrossRefer();
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (CANFORM)) {
event = eventReader.nextEvent();
if (mono.getCanForm() == null) {
mono.setCanForm(event.asCharacters().getData());
} else {
crossRefer.setCanForm(event.asCharacters()
.getData());
}
continue;
}
}
// If we reach the end of an item element we add it to the
// list
if (event.isEndElement()) {
EndElement endElement = event.asEndElement();
if (endElement.getName().getLocalPart() == (MONO)) {
term.setMono(mono);
continue;
}
if (endElement.getName().getLocalPart() == (CROSSREFER)) {
term.addCrossRefers(crossRefer);
continue;
}
if (endElement.getName().getLocalPart() == (ENTRY)) {
terms.add(term);
continue;
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
return terms;
}
}