Putting all together


   import org.w3c.dom.*;
   import org.apache.xerces.parsers.DOMParser;

   class Figures
   { 
      public static void computeArea(String uri)
      {
         try{
            DOMParser parser = new DOMParser();
	    parser.parse(uri);
	    Document doc = parser.getDocument();
	    traverse_tree(doc);
	 }
         catch (Exception e) {
	    e.printStackTrace(System.err);
	 }
      }

      private static void traverse_tree(Node node)
      {
         if(node == null) {
            return;
	 }
         int type = node.getNodeType();
         switch (type) {
            case Node.DOCUMENT_NODE: {
	       traverse_tree(((Document)node).getDocumentElement());
	       break;
	    }
	    case Node.ELEMENT_NODE: {
	       String elementName = node.getNodeName();
	       NamedNodeMap attrs = node.getAttributes();
	       if(elementName.equals("circle")) {
		  Attr attrib = (Attr)attrs.getNamedItem("r");
		  String sr = attrib.getValue();
		  float radius = Float.valueOf(sr).floatValue();
		  float area = (float)Math.PI*radius*radius;
		  System.out.println("Circle : Radius = " + radius + " Area = " + area);
	       }
	       else if(elementName.equals("rectangle")) {
		  Attr attrib = (Attr)attrs.getNamedItem("w");
		  String sw = attrib.getValue();
		  attrib = (Attr)attrs.getNamedItem("h");
		  String sh = attrib.getValue();
		  float width = Float.valueOf(sw).floatValue();
		  float height = Float.valueOf(sh).floatValue();
		  float area = width * height;
		  System.out.println("Rectangle : Width = " + width +
			             " Height = " + height + " Area = " + area);
		}
		else if(elementName.equals("ellipse")) {
		  Attr attrib = (Attr)attrs.getNamedItem("w");
		  String sw = attrib.getValue();
		  attrib = (Attr)attrs.getNamedItem("h");
		  String sh = attrib.getValue();
		  float width = Float.valueOf(sw).floatValue();
		  float height = Float.valueOf(sh).floatValue();
		  float area = (float)Math.PI*(width/2)*(height/2);
		  System.out.println("Ellipse : Width = " + width +
		                     " Height = " + height + " Area = " + area); 
		}
                NodeList childNodes = node.getChildNodes();	
		if(childNodes != null) {
		   int length = childNodes.getLength();
		   for (int loopIndex = 0; loopIndex < length ; loopIndex++)
		   {
		      traverse_tree(childNodes.item(loopIndex));
		   }
		}
		break;
	     }
	  }
       }
    } 

    public class DOMFigures
    {
       public static void main(String[] args)
       {
	  Figures.computeArea(args[0]);
       }
    }