A Program to Display the Input from a SAX Parser: subclass ContentHandler : SAX « XML « Java Tutorial

Java Tutorial
1. Language
2. Data Type
3. Operators
4. Statement Control
5. Class Definition
6. Development
7. Reflection
8. Regular Expressions
9. Collections
10. Thread
11. File
12. Generics
13. I18N
14. Swing
15. Swing Event
16. 2D Graphics
17. SWT
18. SWT 2D Graphics
19. Network
20. Database
21. JSP
22. JSTL
23. Servlet
24. Web Services SOA
25. Email
26. J2ME
27. J2EE Application
28. XML
29. Design Pattern
30. Log
31. Security
32. Apache Common
Java
Java Source Code / Java Documentation
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
C# / C Sharp
C# / CSharp Tutorial
ASP.Net
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
PHP
Python
SQL Server / T-SQL
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Tutorial » XML » SAX 
28. 1. 4. A Program to Display the Input from a SAX Parser: subclass ContentHandler
/*
Code revised from
Java, XML, and JAXP by Arthur Griffith John Wiley & Sons 2002

*/

import java.io.IOException;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.ErrorHandler;
import org.xml.sax.InputSource;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;

class MyContentHandler implements ContentHandler {
  private Locator locator;

  public void setDocumentLocator(Locator locator) {
    this.locator = locator;
    System.out.println("-" + locator.getLineNumber() "---Document ID: " + locator.getSystemId());
  }

  public void startDocument() {
    System.out.println("-" + locator.getLineNumber() "---Document parse started");
  }

  public void endDocument() {
    System.out.println("-" + locator.getLineNumber() "---Document parse ended");
  }

  public void startPrefixMapping(String prefix, String uri) {
    System.out.println("-" + locator.getLineNumber() "---Namespace scope begins");
    System.out.println("     " + prefix + "=\"" + uri + "\"");
  }

  public void endPrefixMapping(String prefix) {
    System.out.println("-" + locator.getLineNumber() "---Namespace scope ends");
    System.out.println("     " + prefix);
  }

  public void startElement(String namespaceURI, String localName, String qName, Attributes atts) {
    System.out.println("-" + locator.getLineNumber() "---Opening tag of an element");
    System.out.println("       Namespace: " + namespaceURI);
    System.out.println("      Local name: " + localName);
    System.out.println("  Qualified name: " + qName);
    for (int i = 0; i < atts.getLength(); i++) {
      System.out.println("       Attribute: " + atts.getQName(i"=\"" + atts.getValue(i"\"");
    }
  }

  public void endElement(String namespaceURI, String localName, String qName) {
    System.out.println("-" + locator.getLineNumber() "---Closing tag of an element");
    System.out.println("       Namespace: " + namespaceURI);
    System.out.println("      Local name: " + localName);
    System.out.println("  Qualified name: " + qName);
  }

  public void characters(char[] ch, int start, int length) {
    System.out.println("-" + locator.getLineNumber() "---Character data");
    showCharacters(ch, start, length);
  }

  public void ignorableWhitespace(char[] ch, int start, int length) {
    System.out.println("-" + locator.getLineNumber() "---Whitespace");
    showCharacters(ch, start, length);
  }

  public void processingInstruction(String target, String data) {
    System.out.println("-" + locator.getLineNumber() "---Processing Instruction");
    System.out.println("         Target: " + target);
    System.out.println("           Data: " + data);
  }

  public void skippedEntity(String name) {
    System.out.println("-" + locator.getLineNumber() "---Skipped Entity");
    System.out.println("           Name: " + name);
  }

  public void showCharacters(char[] ch, int start, int length) {
    System.out.print("        \"");
    for (int i = start; i < start + length; i++)
      switch (ch[i]) {
      case '\n':
        System.out.print("\\n");
        break;
      case '\r':
        System.out.print("\\r");
        break;
      case '\t':
        System.out.print("\\t");
        break;
      default:
        System.out.print(ch[i]);
        break;
      }
    System.out.println("\"");
  }
}

class MyErrorHandler implements ErrorHandler {
  public void warning(SAXParseException ethrows SAXException {
    show("Warning", e);
    throw (e);
  }

  public void error(SAXParseException ethrows SAXException {
    show("Error", e);
    throw (e);
  }

  public void fatalError(SAXParseException ethrows SAXException {
    show("Fatal Error", e);
    throw (e);
  }

  private void show(String type, SAXParseException e) {
    System.out.println(type + ": " + e.getMessage());
    System.out.println("Line " + e.getLineNumber() " Column " + e.getColumnNumber());
    System.out.println("System ID: " + e.getSystemId());
  }
}

public class SAXDump {
  static public void main(String[] arg) {
    SAXParserFactory spf = SAXParserFactory.newInstance();
    XMLReader reader = null;
    try {
      SAXParser parser = spf.newSAXParser();
      reader = parser.getXMLReader();
    catch (Exception e) {
      System.err.println(e);
      System.exit(1);
    }

    reader.setErrorHandler(new MyErrorHandler());
    reader.setContentHandler(new MyContentHandler());

    try {
      InputSource is = new InputSource("test.xml");
      reader.parse(is);
    catch (SAXException e) {
      System.exit(1);
    catch (IOException e) {
      System.err.println(e);
      System.exit(1);
    }
  }
}
//File: test.xml
<roots>
  <a>
    <b>text</b>
  </a>
</roots>
-1---Document ID: file:///C:/Java_Dev/eclipse31/Eclipse/test.xml
-1---Document parse started
-1---Opening tag of an element
       Namespace: 
      Local name: 
  Qualified name: roots
-2---Character data
        "\n  "
-2---Opening tag of an element
       Namespace: 
      Local name: 
  Qualified name: a
-3---Character data
        "\n    "
-3---Opening tag of an element
       Namespace: 
      Local name: 
  Qualified name: b
-3---Character data
        "text"
-3---Closing tag of an element
       Namespace: 
      Local name: 
  Qualified name: b
-4---Character data
        "\n  "
-4---Closing tag of an element
       Namespace: 
      Local name: 
  Qualified name: a
-5---Character data
        "\n"
-5---Closing tag of an element
       Namespace: 
      Local name: 
  Qualified name: roots
-6---Document parse ended
28. 1. SAX
28. 1. 1. SAX parer with all its action displayed
28. 1. 2. SAX Error Checking: A Simple Implementation of the ErrorHandler Interface
28. 1. 3. The XMLReader interface
28. 1. 4. A Program to Display the Input from a SAX Parser: subclass ContentHandler
28. 1. 5. A Class to Convert SAX Parse Information into an XML Document
28. 1. 6. A Content Handler to Output a Sorted List
ww__w___.j_av__a_2___s__.___c__o__m__ | Contact Us
Copyright 2003 - 08 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.