XMLPrettyPrinter3


import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.io.*;


public class XMLPrettyPrinter3 extends XMLPrettyPrinter2
 implements DocumentHandler {

  public XMLPrettyPrinter3(Writer out) {
    super(out);
  }

  public XMLPrettyPrinter3(OutputStream out) {
    super(out);
  }

  public void startElement(String name, AttributeList attributes)
   throws SAXException {
    
    try {
      flushTextBuffer();
      indent();
      out.write("<" + name);
      for (int i = 0; i < attributes.getLength(); i++) {
        out.write(" "); 
        out.write(attributes.getName(i)); 
        out.write("=\""); 
        out.write(attributes.getValue(i)); 
        out.write("\""); 
      }
      out.write(">\r\n");
      depth++;
    }
    catch (IOException e) {
      throw new SAXException(e);
    } 
    
  }

  // Could easily have put main() method in a separate class
  public static void main(String[] args) {
    
    Parser parser;
    try {
     parser = ParserFactory.makeParser();
    }
    catch (Exception e) {
      // fall back on Xerces parser by name
      try {
        parser = ParserFactory.makeParser(
         "org.apache.xerces.parsers.SAXParser");
      }
      catch (Exception ee) {
        System.err.println("Couldn't locate a SAX parser");
        return;          
      }
    }
     
    if (args.length == 0) {
      System.out.println(
       "Usage: java XMLPrettyPrinter3 URL1 URL2..."); 
    } 
      
    // Install the Document Handler      
    parser.setDocumentHandler(new XMLPrettyPrinter3(System.out));
    
    // 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 report on " + args[i] 
         + " because of the IOException " + e);
      }
      
    }  
  
  }

}

Previous | Next | Top | Cafe con Leche

Copyright 2000 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified February 15, 2000