import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.SAXException; public class DOMclone { public static void main(String args[]) throws ParserConfigurationException, SAXException, IOException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse (new File(args[0]).toURL().toString()); Element e = doc.getDocumentElement(); e.appendChild( e.cloneNode(true) ); new TreeTraverser (doc); } } class TreeTraverser{ static String indent=""; TreeTraverser (Node node){ String s = node.getNodeValue(); System.out.println( indent + node.getNodeName() ); indent += " "; if( node.hasChildNodes() ){ NodeList children = node.getChildNodes(); for(int i=0; i < children.getLength(); i++ ){ new TreeTraverser ( children.item(i) ); } } indent = indent.substring(2); } }