Java sax example

ht‮www//:spt‬.theitroad.com

Here's an example of how to use the Simple API for XML (SAX) in Java to parse an XML document:

Suppose you have the following XML document example.xml:

<?xml version="1.0"?>
<catalog>
  <book id="bk101">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications 
      with XML.</description>
  </book>
  <book id="bk102">
    <author>Ralls, Kim</author>
    <title>Midnight Rain</title>
    <genre>Fantasy</genre>
    <price>5.95</price>
    <publish_date>2000-12-16</publish_date>
    <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
  </book>
</catalog>

Here's an example of how to parse this document using the SAX API in Java:

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.File;

public class MyHandler extends DefaultHandler {
    private boolean author = false;
    private boolean title = false;
    private boolean genre = false;
    private boolean price = false;
    private boolean publishDate = false;
    private boolean description = false;

    public void startElement(String uri, String localName, String qName, Attributes attributes)
            throws SAXException {
        if (qName.equalsIgnoreCase("author")) {
            author = true;
        } else if (qName.equalsIgnoreCase("title")) {
            title = true;
        } else if (qName.equalsIgnoreCase("genre")) {
            genre = true;
        } else if (qName.equalsIgnoreCase("price")) {
            price = true;
        } else if (qName.equalsIgnoreCase("publish_date")) {
            publishDate = true;
        } else if (qName.equalsIgnoreCase("description")) {
            description = true;
        }
    }

    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        // Do nothing
    }

    public void characters(char ch[], int start, int length)
            throws SAXException {
        if (author) {
            System.out.println("Author: " + new String(ch, start, length));
            author = false;
        } else if (title) {
            System.out.println("Title: " + new String(ch, start, length));
            title = false;
        } else if (genre) {
            System.out.println("Genre: " + new String(ch, start, length));
            genre = false;
        } else if (price) {
            System.out.println("Price: " + new String(ch, start, length));
            price = false;
        } else if (publishDate) {
            System.out.println("Publish Date: " + new String(ch, start, length));
            publishDate = false;
        } else if (description) {
            System.out.println("Description: " + new String(ch, start, length));
            description = false;
        }
    }
}

public class MySaxParser {
    public static void main(String[] args) throws Exception {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser saxParser = factory.newSAXParser();
        MyHandler handler = new MyHandler