LexicalHandler Example


import org.xml.sax.*;
import org.xml.sax.ext.*;
import org.apache.xerces.parsers.*; 
import java.io.IOException;


public class SAXCommentReader implements LexicalHandler{

  public void startDTD(String name, String publicId, String systemId) 
   throws SAXException {
  }
  
  public void endDTD() throws SAXException {
  }
  
  public void startEntity(String name) throws SAXException {}
  public void endEntity(String name) throws SAXException {}
  public void startCDATA() throws SAXException {}
  public void endCDATA() throws SAXException {}
  
  
  public void comment (char[] text, int start, int length) 
   throws SAXException {
    
    String comment = new String(text, start, length);
    System.out.println(comment);
    
  }


  public static void main(String[] args) {
    
    XMLReader parser = new SAXParser();
     
    // turn on comment handling
    try {
      parser.setProperty("http://xml.org/sax/properties/lexical-handler", 
       new SAXCommentReader());
    }
    catch (SAXNotRecognizedException e) {
      System.err.println(
       "Installed XML parser does not provide lexical events...");
      return;
    } 
    catch (SAXNotSupportedException e) {
      System.err.println(
       "Cannot turn on comment processing here");
      return;
    } 
     
    if (args.length == 0) {
      System.out.println("Usage: java SAXCommentReader URL1 URL2..."); 
    } 
      
    // start parsing... 
    for (int i = 0; i < args.length; i++) {
      
      try {
        parser.parse(args[i]);
      }
      catch (SAXParseException e) { // well-formedness error
        System.out.println(args[i] + " is not well formed.");
        System.out.println(e.getMessage()
         + " at line " + e.getLineNumber() 
         + ", column " + e.getColumnNumber());
      }
      catch (SAXException e) { // some other kind of error
        System.out.println(e.getMessage());
      }
      catch (IOException e) {
        System.out.println("Could not check " + args[i] 
         + " because of the IOException " + e);
      }
      
    }  
  
  }

}

Previous | Next | Top | Cafe con Leche

Copyright 2000 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified March 18, 2000