/* * JDOMTester.java * * based on org.jdom.samples.SAXBuilderDemo in JDOM beta-5 * */ import java.io.*; import java.util.*; import org.jdom.*; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; /** *

JDOMTester tests speed of parsing and building documents * with JDOM. */ public class JDOMTester { private static final String DEFAULT_SAX_DRIVER_CLASS = "org.apache.xerces.parsers.SAXParser"; private String saxDriverClass; private SAXBuilder builder; /** *

* This will create an instance of {@link SAXBuilder} * for use in the rest of this program. *

* * @param saxDriverClass String name of driver class to use. */ public JDOMTester(String saxDriverClass) { this.saxDriverClass = saxDriverClass; this.builder = new SAXBuilder(saxDriverClass); } /** */ private String readFile(String filename) throws IOException, JDOMException { BufferedReader in = new BufferedReader(new FileReader(filename)); String line = ""; StringBuffer buffer = new StringBuffer(); while ( (line = in.readLine())!=null && !(line.trim().equals(""))) { buffer.append(line); } return buffer.toString(); } /** */ private void parseElement(Element rootElement) { rootElement.getName(); List attributeList = rootElement.getAttributes(); for (int i = 0; i< attributeList.size(); i++ ) { Attribute attr = (Attribute)attributeList.get(i); attr.getName(); attr.getValue(); } List childrenList = rootElement.getChildren(); //System.out.println("Element " + rootElement.getName() + " has " + attributeList.size() + " attributes and " // + childrenList.size() + " children." ); for (int j=0; j")); Element rootElement = doc.getRootElement(); addAttributes(rootElement, 2); addChildren(rootElement, 2, 2, 2); //attributes, children, levels } long endTime = System.currentTimeMillis(); return (endTime-startTime); } /** */ public void test(String filename, int repeatCount, int parse_count, int build_count, OutputStream out) throws IOException, JDOMException { String xmlDocument = readFile(filename); long[] parsetimes = new long[repeatCount]; long[] buildtimes = new long[repeatCount]; for (int i = 0; i"); return; } // Load command line parameters String filename = args[0]; String saxDriverClass = DEFAULT_SAX_DRIVER_CLASS; int repeatCount = Integer.parseInt(args[1]); if (args.length == 3) { saxDriverClass = args[2]; } // Create an instance of the tester and test try { JDOMTester tester = new JDOMTester(saxDriverClass); for (int i = 1000; i <= 1000; i=i*10) { tester.test(filename, repeatCount, i, i, System.out); } } catch (JDOMException e) { if (e.getRootCause() != null) { e.getRootCause().printStackTrace(); } else { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } }