SAX Parser action

In this chapter you will learn:

  1. SAX parer with all its action displayed

SAX parer with all its action displayed

SAX stands for Simple API for XML. It is an event-based sequential access parser API. SAX Parser provides a mechanism for reading data from an XML document alternative to Document Object Model (DOM). Where the DOM operates on the document as a whole, SAX parsers operate on each piece of the XML document sequentially.

The following code prints out all SAX parser actions. The core function is done by TrySAX class which extends DefaultHandler.

Each method in DefaultHandler is for call back, which means if the SAX parser encounter the starting tag, it will call startDocument() method.

import java.io.StringReader;
/*  ja v a 2s .  co  m*/
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.helpers.DefaultHandler;
class TrySAX extends DefaultHandler {

  public void startDocument() {
    System.out.println("Start document: ");
  }

  public void endDocument() {
    System.out.println("End document: ");
  }

  public void startElement(String uri, String localName, String qname,
      Attributes attr) {
    System.out.println("Start element: local name: " + localName + " qname: "
        + qname + " uri: " + uri);
  }

  public void endElement(String uri, String localName, String qname) {
    System.out.println("End element: local name: " + localName + " qname: "
        + qname + " uri: " + uri);
  }

  public void characters(char[] ch, int start, int length) {
    System.out.println("Characters: " + new String(ch, start, length));
  }

  public void ignorableWhitespace(char[] ch, int start, int length) {
    System.out.println("Ignorable whitespace: " + new String(ch, start, length));
  }
}
public class Main {
  public static void main(String args[]) throws Exception {
    InputSource is = new InputSource();
    is.setCharacterStream(new StringReader(xmlRecords));
    DefaultHandler handler = new TrySAX();
    process(is, handler);
  }

  private static void process(InputSource file, DefaultHandler handler)
      throws Exception {
    SAXParserFactory spf = SAXParserFactory.newInstance();
    spf.setNamespaceAware(true);
    spf.setValidating(true);
    SAXParser parser = spf.newSAXParser();
    parser.parse(file, handler);
  }
  static String xmlRecords = 
      "<data>" +
      "  <employee>" +
      "    <name>Tom</name>"+ 
      "    <title>Manager</title>" +
      "  </employee>" +
      "  <employee>" +
      "    <name>Jerry</name>"+ 
      "    <title>Programmer</title>" +
      "  </employee>" +
      "</data>";
}

The code above generates the following result.

Next chapter...

What you will learn in the next chapter:

  1. How to parse XML file with SAX parser
Home » Java Tutorial » XML

DOM Parser

    DOM
    Parse XML string
    Parse XML file with DOM Parser
    DOM Parser Error
    Output DOM Document to console
    Save DOM Document to a file
    Format a DOM Document
    Output Document to String
    Visit all elements
    Element retrieve by tag name
    Element character data retrieve
    DOM node visiting
    Node type
    DOM node dump
    Children nodes
    Root Element
    Doc Type
    Declared Entities
    External Entities resolve
    DOMImplementation

DOM Edit

    Element text child data
    Element remove
    Add text node to element
    Element text data update
    Add attribute to element
    Attribute remove
    Create new empty element
    Element clone
    CDATASection
    Comments element
    Processing Instruction
    New XML Document

SAX Parser

    SAX Parser action
    Parse an XML file with SAX parser
    SAX Parser based XML Document dump
    SAX Parser Error Handler
    SAX Parser content handler
    SAX Locator

Utility

    Encode String for XML attribute
    Convert Source to InputSource