Hallo, ich versuche mit Java ein HTML-Dokument einzulesen und als String auszugeben. Habe die API ein bissel durchstoebert und es soll wohl irgendwie mit javax.swing.text.html.HTMLDocument gehen. Allerdings habe ich nicht rausbekommen wie ich irgendeine URL einlesen kann und daraus ein solches HTMLDocument mache. Da steht es soll mit der nested Class HTMLDocument.HTMLReader gehen, aber keien Ahnung wie.
Kann mir jemand vielleicht ein anschauliches Beispiel dafuer geben oder nen guten Link? Google hat mir auch nicht so recht weitergeholfen
Was heißt "HTML-Dokument einlesen"? Von wo lesen? Und wofür ist es wichtig, daß es ein HTML-Dokument ist, wenn Du es nur als String ausgibst?
Ich uebergebe eien URL und er liest den Sourcecode ein. Danach moechte ich den String nach gewissen Inhalten durchsuchen, quasi wie eine Suchmaschine. Jedenfalls haette ich gerne die gesammte SOurce einer HTML-Datei als String. Geht recht einfach mit toString() wenn man es erstmal als HTMLDocument Object hat
hmm, also das geht auch ohne HTMLDokument oder wie auch immer die Klasse heißt,
zum Webbrowsen brauchst du eh Sockets & Co.,
hatte das mal testweise aus diesem Buch angeschaut:
http://www.javabuch.de/aber steht sicher auch in jedem anderen,
Beispielprogramm daraus:
import java.net.*;
import java.io.*;
public class Listing4504
{
public static void main(String[] args)
{
if (args.length != 2) {
System.err.println(
"Usage: java Listing4504 "
);
System.exit(1);
}
try {
Socket sock = new Socket(args[0 ], 80);
OutputStream out = sock.getOutputStream();
InputStream in = sock.getInputStream();
//GET-Kommando senden
String s = "GET " + args[1 ] + " HTTP/1.0" + "\r\n\r\n";
out.write(s.getBytes());
//Ausgabe lesen und anzeigen
int len;
byte[] b = new byte[100 ];
while ((len = in.read(b)) != -1) {
System.out.write(b, 0, len);
}
//Programm beenden
in.close();
out.close();
sock.close();
} catch (IOException e) {
System.err.println(e.toString());
System.exit(1);
}
}
}
statt auf dem Bildschirm auszugeben
kannst du den Code dann auch in einen String speichern
Man muß doch nicht gleich das HTTP-Protokoll implementieren, sondern kann einfach die Klasse java.net.URL benutzen:
public static String readURL(String url) throws Exception {
BufferedReader in = new BufferedReader(
new InputStreamReader(
new URL(url).openStream()));
String inputLine;
StringBuffer result = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
result.append(inputLine);
}
in.close();
return result.toString();
}
(ungetestet und angelehnt an
http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html)
Hatte vergessen mich vorhin einzuloggen…
(ungetestet und angelehnt an http://java.sun.com/docs/books/tutorial/networking/urls/readingURL.html)
Vielen Dank, genau wonach ich gesucht habe!!!!!