Putting all together


   import org.xml.sax.*;
   import org.xml.sax.helpers.DefaultHandler;
   import org.apache.xerces.parsers.SAXParser;

   class SaxParserGrades extends DefaultHandler
   {
      static float grades[][] = new float[100][5];
      int gi = -1;
      int nstudent = 0;
    
      public void startElement(String uri, String localName, String rawName,
                               Attributes attributes)
      {
         if(localName.equals("hw1"))
            gi = 0;
         else if(localName.equals("hw2"))
            gi = 1;
         else if(localName.equals("project"))
            gi = 2;
         else if(localName.equals("final"))
            gi = 3;
         else if(localName.equals("student"))
         nstudent++;
      }

      public void endElement(String uri, String localName, String rawName)
      {
         gi = -1;
      }

      public void characters(char characters[], int start, int length)
      {
          String chData = (new String(characters, start,length)).trim();
          if(chData.indexOf("\n") < 0 && chData.length() > 0){
             if(gi >= 0){
                grades[nstudent-1][gi] = Integer.parseInt(chData);
             }
          }
      }

      public void endDocument()
      {
         float Ave = 0;
         int i = 0, j = 0;
         System.out.println("Grades");
         for(i = 0; i < nstudent ; i++){
            float total = 0;
            for(j = 0; j < 4; j++){
               total += grades[i][j];
            }		
            grades[i][4] = total/4;
            Ave += grades[i][4];
            System.out.println("Student " + i + "=" + grades[i][4]);
         }
         Ave /= nstudent;
         System.out.println("Class Average =" + Ave);
      }
   }

   public class SaxGrades 
   {
      public static void main(String[] args)
      {
         try{
            SaxParserGrades SAXHandler = new SaxParserGrades();
            SAXParser parser = new SAXParser();
            parser.setContentHandler(SAXHandler);
            parser.setErrorHandler(SAXHandler);
            parser.parse(args[0]);
      }
      catch(Exception e){
         e.printStackTrace(System.err);
      }
   }
}