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);
}
}
}