Weblogs with JDOM
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import java.util.*;
import java.net.*;
public class WeblogsJDOM {
public static String DEFAULT_SYSTEM_ID
= "http://static.userland.com/weblogMonitor/logs.xml";
public static List listChannels() throws JDOMException {
return listChannels(DEFAULT_SYSTEM_ID);
}
public static List listChannels(String systemID)
throws JDOMException, NullPointerException {
if (systemID == null) {
throw new NullPointerException("URL must be non-null");
}
SAXBuilder builder = new SAXBuilder();
// Load the entire document into memory
// from the network or file system
Document doc = builder.build(systemID);
// Descend the tree and find the URLs. It helps that
// the document has a very regular structure.
Element weblogs = doc.getRootElement();
List logs = weblogs.getChildren("log");
Vector urls = new Vector(logs.size());
Iterator iterator = logs.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
Element log = (Element) o;
try {
// This will probably be changed to
// getElement() or getChildElement()
Element url = log.getChild("url");
if (url == null) continue;
String content = url.getTextTrim();
URL u = new URL(content);
urls.addElement(u);
}
catch (MalformedURLException e) {
// bad input data from one third party; just ignore it
}
}
return urls;
}
public static void main(String[] args) {
try {
List urls;
if (args.length > 0) {
urls = listChannels(args[0]);
}
else {
urls = listChannels();
}
Iterator iterator = urls.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
catch (/* Unexpected */ Exception e) {
e.printStackTrace();
}
}
}