import java.util.regex.*; import java.io.*; import java.util.*; import java.net.*; import javax.swing.tree.*; import javax.swing.*; public class FindURLsTree { private TreeNode getLinksFromURL(String url) { DefaultMutableTreeNode root = new DefaultMutableTreeNode(url); try { BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream() ) ); // Pattern p = Pattern.compile("href.*?http://\"*(.*?)\"*>", Pattern.CASE_INSENSITIVE); Pattern p = Pattern.compile("href.*?http://\"*(.*?)\"*[\\s,>]", Pattern.CASE_INSENSITIVE); String line; int childCtr=0; while((line = in.readLine()) != null) { Matcher m = p.matcher(line); while (m.find()) { System.out.println(m.group(1)); DefaultMutableTreeNode t = new DefaultMutableTreeNode(m.group(1)); root.insert(t,childCtr++); } } in.close(); } catch (IOException e) { System.err.println(e); System.exit(0); } return root; } public static void main(String[] args) { FindURLsTree ft = new FindURLsTree(); TreeNode root = ft.getLinksFromURL(args[0]); JFrame f = new JFrame(); JTree jTree = new JTree(root); f.getContentPane().add(jTree); f.setSize(300,300); f.setLocation(100,100); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }