How To: Read XML in Java

// Program to get the current temperature from interceptvector.com
// Robert Burns, Diablo Valley College, Computer Science Department 5/3/04

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

public class MySaxHandler
{
  public static void main(String[] argv) throws Exception
  {
    DefaultHandler handler = new DefaultHandler()
    {
      private String temp; // degrees F
      private String sky; // e.g, Mostly Sunny
      private String city;
      private String lastElement;

      public void characters(char[] chars, int start, int length)
      {
        if (lastElement.equals("Temprature") && (temp == null))
          temp = new String(chars, start, length);
        if (lastElement.equals("Forecast") && (sky == null))
          sky = new String(chars, start, length);
        if (lastElement.equals("Location") && (city == null))
          city = new String(chars, start, length);
      }
      public void endDocument(){}
      public void endElement(String namespaceURI, String localName, String qName){}
      public void endPrefixMapping(String prefix){}
      public void ignorableWhitespace(char[] ch, int start, int length){}
      public void processingInstruction(String target, String data){}
      public void setDocumentLocator(Locator locator){}
      public void skippedEntity(String name){}
      public void startDocument(){}
      public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
      {
        lastElement = qName;
      }
      public void startPrefixMapping(String prefix, String uri){}

      public String toString()
      {
        return "In " + city + ", it's " + temp + " degrees Fahrenheit and " + sky + " skies";
      }
    };

    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser saxParser = factory.newSAXParser();
    saxParser.parse("http://www.ejse.com/WeatherService/Service.asmx/GetExtendedWeatherInfo?zipCode=94523", handler);     
    System.out.println(handler);
  }
}