Si infatti il codice funziona, solo ke se provo ad iterare, cioè a passargli cm nuova source il link ke ha appena scoperto mi dà errore....ora t scrivo il codice cn le mie correzioni (le classe Graph e Node fanno parte di una libreria unina2 che dv utilizzare e il main è rikiamato a parte da un'altra classe):
codice:
package unina2.parsers.html;
import unina2.graph.gui.*;
import java.io.*;
import java.net.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
public class translateHTML {
public translateHTML(){}
Graph webGraph ;
public void crawlweb(String source)
{
webGraph = new Graph();
EditorKit kit = new HTMLEditorKit();
Document doc = kit.createDefaultDocument();
// The Document class does not yet
// handle charset's properly.
doc.putProperty("IgnoreCharsetDirective",
Boolean.TRUE);
try {
Reader rd = getReader(source);
int startPos = source.indexOf(".") + 1 ;
int endPos = source.length() ;
String webName = source.substring(startPos,endPos) ;
Node root=webGraph.addNode(webName,150,100,10);
// Parse the HTML.
kit.read(rd, doc, 0);
// Iterate through the elements
// of the HTML document.
ElementIterator it = new ElementIterator(doc);
javax.swing.text.Element elem;
while ((elem = it.next()) != null) {
SimpleAttributeSet s = (SimpleAttributeSet)elem.getAttributes().getAttribute(HTML.Tag.A);
if (s != null) {
System.out.println(s.getAttribute(HTML.Attribute.HREF));
String r=(String)s.getAttribute(HTML.Attribute.HREF);
Node nodofiglio=webGraph.addNode(r,100,50,15);
webGraph.addEdge(root, nodofiglio,90) ;
crawlweb(r);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
// Returns a reader on the HTML data. If 'uri' begins
// with "http:", it's treated as a URL; otherwise,
// it's assumed to be a local filename.
public static Reader getReader(String uri)
throws IOException {
if (uri.startsWith("http:")) {
// Retrieve from Internet.
URLConnection conn =
new URL(uri).openConnection();
return new
InputStreamReader(conn.getInputStream());
} else {
// Retrieve from file.
int startPos = uri.indexOf("/") + 1 ;
int endPos = uri.length() ;
String fileName = uri.substring(startPos,endPos) ;
return new FileReader(fileName);
}
}
public Graph getSchemaGraph()
{
return webGraph ;
}
}