// -----------------------------------------
// SaxBsp.java
// 1.0
// -----------------------------------------

import java.io.*;         // 1
import org.xml.sax.*;     // 2
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;

public class SaxBsp extends DefaultHandler  // 3
{
  static String dateiName;    // 4
  static String elementName;

  // ---- main ----
  public static void main(String args[])  // 5
  {
    if (args.length != 2)     // 6
    {
      System.err.println    // 7
        ("Aufruf: SaxBsp01 <dateiname> <element>");
      System.exit(1);
    }
    dateiName = args[0];    // 8
    elementName = args[1];      
    DefaultHandler handler = new SaxBsp();  // 9
  }
  
  // ---- constructor ----
  public SaxBsp()         // 10
  {
    SAXParserFactory factory =  // 11
      SAXParserFactory.newInstance();
    factory.setNamespaceAware(true);  // 12
    try                 // 13
    {
      SAXParser saxParser =   // 14
        factory.newSAXParser();
      saxParser.parse     // 15
        ( new File(dateiName), this);

    } catch (Throwable t) { // 16
      t.printStackTrace();    // 17
    }
    System.exit(0);       // 18
  }
 
  //----------------------------------------------
  // berschreibe Methoden des SAX DocumentHandler 
  //----------------------------------------------
  public void startDocument() // 19
  throws SAXException
  {
    System.out.println("Dokumentanfang"); // 20
  }
 
  public void endDocument() 
  throws SAXException
  {
    System.out.println("\nDokumentende");
  }
 
  public void startElement    // 21
   (String namespaceURI,
    String lName,           // 22
    String qName, 
    Attributes attrs)     // 23
  throws SAXException
  {
    if (lName.equals(elementName))  // 24
    {
      System.out.println("\nELEMENT: "+lName);
      for(int x=0; x<attrs.getLength(); x++)  // 25
      {
        String localName=   // 26
          attrs.getLocalName(x);
        System.out.print("  ATTR : ");  // 27
        System.out.println(localName);
        System.out.println
          ("         "+attrs.getValue(x));
      }
    }
  }
}

