Here's the same program using DOM instead of JDOM. Which is simpler?
import java.math.*; import java.io.*; import org.w3c.dom.*; import org.apache.xerces.dom.*; import org.apache.xml.serialize.*; public class FibonacciDOM { public static void main(String[] args) { try { DOMImplementationImpl impl = (DOMImplementationImpl) DOMImplementationImpl.getDOMImplementation(); DocumentType type = impl.createDocumentType("Fibonacci_Numbers", null, null); // type is supposed to be able to be null, // but in practice that didn't work DocumentImpl fibonacci = (DocumentImpl) impl.createDocument(null, "Fibonacci_Numbers", type); BigInteger low = BigInteger.ZERO; BigInteger high = BigInteger.ONE; Element root = fibonacci.createElement("Fibonacci_Numbers"); // This not only creates the element; it also makes it the // root element of the document. for (int i = 0; i <= 25; i++) { Element number = fibonacci.createElement("fibonacci"); number.setAttribute("index", Integer.toString(i)); Text text = fibonacci.createTextNode(low.toString()); number.appendChild(text); root.appendChild(number); BigInteger temp = high; high = high.add(low); low = temp; } try { // Now that the document is created we need to *serialize* it FileOutputStream out = new FileOutputStream("fibonacci_8859_1.xml"); OutputFormat format = new OutputFormat(fibonacci); XMLSerializer serializer = new XMLSerializer(out, format); serializer.serialize(root); out.flush(); out.close(); } catch (IOException e) { System.err.println(e); } } catch (DOMException e) { e.printStackTrace(); } } }
62 lines vs. 42 lines