import java.io.*;
import java.net.*;
import java.util.List;
import java.util.Iterator;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

/**
 * Basic JDOM Example
 * Illustrates how to traverse a JDOM tree
 * Example usage:
 * java jdom4
 */
public class jdom4 {
  private int numElements = 0;

  // Download and Output XML File
  public void process (String url) throws MalformedURLException {
    try {
      //  Use SAXBuilder
      SAXBuilder builder = new SAXBuilder();
      Document doc = builder.build(new URL(url));
      Element root = doc.getRootElement();
      processElement (root);
      System.out.println ("Total Number of Elements Processed:  "
        +numElements);
    } catch (JDOMException e) {
      System.out.println ("JDOM Exception:  "+e.getMessage());
    }
  }

  //  Recursive Function to Process Elements
  //  Prints the Element Name and keeps a running count
  //  out total number of elements.
  private void processElement (Element element) {
    numElements++;
    String elementName = element.getName();
    System.out.println (elementName);
    List kids = element.getChildren();
    Iterator iterator = kids.iterator();
    while (iterator.hasNext()) {
      Element kid = (Element) iterator.next();
      processElement (kid);
    }
  }

  public static void main (String[] args) throws Exception {
    System.out.println ("JDOM4 Example");
    jdom4 app = new jdom4();
    app.process("http://p.moreover.com/cgi-local/page?c=Top%20stories&o=xml");
  }

}
