Hallo an alle,
ich habe den ganzen Tag damit zugebracht, wie ich am besten eine HTML Seite bearbeite. Ziel soll es sein, nur wichtige Teile rauszusuchen und weiterzuverwenden. Als erstes wollte ich daher die HTML Seite in irgendeiner Form instanziieren. Mein Code sieht in etwa so aus:
Ich bekomme an dieser Stelle immer wieder folgende Exception:
javax.swing.text.ChangedCharSetException
at javax.swing.text.html.parser.DocumentParser.handleEmptyTag(Unknown Source)
at javax.swing.text.html.parser.Parser.startTag(Unknown Source)
at javax.swing.text.html.parser.Parser.parseTag(Unknown Source)
at javax.swing.text.html.parser.Parser.parseContent(Unknown Source)
at javax.swing.text.html.parser.Parser.parse(Unknown Source)
at javax.swing.text.html.parser.DocumentParser.parse(Unknown Source)
at javax.swing.text.html.parser.ParserDelegator.parse(Unknown Source)
at javax.swing.text.html.HTMLEditorKit.read(Unknown Source)
at htmlSource.<init>(htmlSource.java:59)
at htmlSource.main(htmlSource.java:83)
Alles, was ich versucht habe, hat nicht geklappt: Ich habe mit InputStreamReadern gearbeitet und dort z.B. verschiedene Charsets dem Konstruktor übergeben, ich habe die Daten erst mal auf meiner Platte in eine Datei geschrieben und ich habe die API und stundenlang google nach Möglichkeiten durchsucht.
Dabei bin ich auf folgende Info gestoßen:
Laut der API benutzt der Parser standardmäßig DTD 3.2 (???) und in dem HTML File, welches ich bearbeiten will steht oben im Kommentar, dass DTD 4.0 benutzt wird. Also liegt für mich nahe, dass das Problem dort liegt. Kann ich also irgendwoher eine Klasse bekommen, die DTD 4.0 parsen kann und wenn ja, wie kann ich die an der Stelle einbauen? Oder brauche ich das ganze vielleicht nicht und kann die HTML Elemente auch irgendwie anders bearbeiten? Am Ende will ich eigentlich Teile aus der HTML Datei ausschneiden und quasi den Source Code dieses Teils weiterverwenden. Ich schreibe das ganze nämlich als Agent in Lotus Notes und das soll quasi an das Ende einer e-mail rangehängt werden.
Vielen Dank für eure Hilfe!
Basti
P.S.: Ach ja, ich benutze JDK 1.5.0_03 und als IDE Eclipse 3.0.2
ich habe den ganzen Tag damit zugebracht, wie ich am besten eine HTML Seite bearbeite. Ziel soll es sein, nur wichtige Teile rauszusuchen und weiterzuverwenden. Als erstes wollte ich daher die HTML Seite in irgendeiner Form instanziieren. Mein Code sieht in etwa so aus:
Code:
URL u = new URL("www.hastenichtgesehen.de");
BufferedInputStream bis = new BufferedInputStream(u.openStream());
HTMLEditorKit kit = new HTMLEditorKit();
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
try {
kit.read(isr,doc,0);
} catch (IOException e1) {
System.out.println("IOException: " + e1);
e1.printStackTrace();
} catch (BadLocationException e1) {
System.out.println("BadLocationException: " + e1);
e1.printStackTrace();
}
Ich bekomme an dieser Stelle immer wieder folgende Exception:
javax.swing.text.ChangedCharSetException
at javax.swing.text.html.parser.DocumentParser.handleEmptyTag(Unknown Source)
at javax.swing.text.html.parser.Parser.startTag(Unknown Source)
at javax.swing.text.html.parser.Parser.parseTag(Unknown Source)
at javax.swing.text.html.parser.Parser.parseContent(Unknown Source)
at javax.swing.text.html.parser.Parser.parse(Unknown Source)
at javax.swing.text.html.parser.DocumentParser.parse(Unknown Source)
at javax.swing.text.html.parser.ParserDelegator.parse(Unknown Source)
at javax.swing.text.html.HTMLEditorKit.read(Unknown Source)
at htmlSource.<init>(htmlSource.java:59)
at htmlSource.main(htmlSource.java:83)
Alles, was ich versucht habe, hat nicht geklappt: Ich habe mit InputStreamReadern gearbeitet und dort z.B. verschiedene Charsets dem Konstruktor übergeben, ich habe die Daten erst mal auf meiner Platte in eine Datei geschrieben und ich habe die API und stundenlang google nach Möglichkeiten durchsucht.
Dabei bin ich auf folgende Info gestoßen:
Laut der API benutzt der Parser standardmäßig DTD 3.2 (???) und in dem HTML File, welches ich bearbeiten will steht oben im Kommentar, dass DTD 4.0 benutzt wird. Also liegt für mich nahe, dass das Problem dort liegt. Kann ich also irgendwoher eine Klasse bekommen, die DTD 4.0 parsen kann und wenn ja, wie kann ich die an der Stelle einbauen? Oder brauche ich das ganze vielleicht nicht und kann die HTML Elemente auch irgendwie anders bearbeiten? Am Ende will ich eigentlich Teile aus der HTML Datei ausschneiden und quasi den Source Code dieses Teils weiterverwenden. Ich schreibe das ganze nämlich als Agent in Lotus Notes und das soll quasi an das Ende einer e-mail rangehängt werden.
Vielen Dank für eure Hilfe!
Basti
P.S.: Ach ja, ich benutze JDK 1.5.0_03 und als IDE Eclipse 3.0.2