Attributes Example
import org.xml.sax.*;
import org.apache.xerces.parsers.*;
import java.io.*;
import java.util.*;
import org.xml.sax.helpers.*;
public class XLinkSpider extends DefaultHandler {
public static Enumeration listURIs(String systemId)
throws SAXException, IOException {
// set up the parser
XMLReader parser;
try {
parser = XMLReaderFactory.createXMLReader();
}
catch (SAXException e) {
try {
parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
}
catch (SAXException e2) {
System.err.println("Error: could not locate a parser.");
return null;
}
}
// Install the Content Handler
XLinkSpider spider = new XLinkSpider();
parser.setContentHandler(spider);
parser.parse(systemId);
return spider.uris.elements();
}
private Vector uris = new Vector();
public void startElement(String namespaceURI, String localName,
String rawName, Attributes atts) throws SAXException {
String uri = atts.getValue("http://www.w3.org/1999/xlink", "href");
if (uri != null) uris.addElement(uri);
}
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Usage: java XLinkSpider URL1 URL2...");
}
// start parsing...
for (int i = 0; i < args.length; i++) {
try {
Enumeration uris = listURIs(args[i]);
while (uris.hasMoreElements()) {
String s = (String) uris.nextElement();
System.out.println(s);
}
}
catch (Exception e) {
System.err.println(e);
e.printStackTrace();
}
} // end for
} // end main
} // end XLinkSpider