package eventbasedparsing; import org.xml.sax.ContentHandler; import org.xml.sax.XMLReader; import org.xml.sax.SAXException; import org.xml.sax.InputSource; import java.util.*; import java.io.*; import org.biojava.bio.program.sax.BlastLikeSAXParser; /** * */ public class TutorialEx1 { /** * Takes an XML doc as input and parses it * * @param args a String[] representation of a pathname * @exception Exception if an error occurs */ public static void main(String[] args) throws Exception { String oInput = null; String oMode = null; boolean tStrict = true; // Catch wrong number of arguments or help requests if ( (args.length != 1) || (args[0].equals("-help")) || (args[0].equals("-h")) ) { System.out.println(); System.out.println("Usage: java TutorialEx1 "); System.out.println(); System.exit(1); } if (args.length == 1) { oInput = args[0]; } //Now the actual application... //Create the object(s) we want to populate ArrayList oDatabaseIdList = new ArrayList(); /** * Create a SAX Parser */ XMLReader oParser = (XMLReader) new BlastLikeSAXParser(); /** * Create an XML ContentHandler. This * implementation of the DocumentHandler * interface simple outputs nicely formatted * XML. Passing a true value to the SimpleXMLEmitter * constructor instructs the ContentHandler * to take QNames from the SAXParser, rather * than LocalNames. */ ContentHandler oHandler = (ContentHandler) new TutorialEx1Handler(oDatabaseIdList); /* * Give the parser a reference to the ContentHandler * so that it can send SAX2 mesagges. */ oParser.setContentHandler(oHandler); //Parsing using ByteSteam as InputSource // Open file and read all lines from file sequentially FileInputStream oInputFileStream; BufferedReader oContents; try { // create input stream oInputFileStream = new FileInputStream(oInput); oParser.parse(new InputSource(oInputFileStream)); } catch (java.io.FileNotFoundException x) { System.out.println(x.getMessage()); System.out.println("Couldn't open file"); System.exit(0); } //At this point, the output is parsed, and objects populated System.out.println("Results of parsing"); System.out.println("=================="); for (int i = 0; i < oDatabaseIdList.size();i++) { System.out.println(oDatabaseIdList.get(i)); } } }