Hi!
Ich wandle mit Hilfe des HTMLEditorKit, eine HTML-Site nach ASCII.
Das funzt auch ganz gut.
Danach möchte ich den Text wieder aufbereiten, damit er von einer (in PHP gecodeten) Web-Page wieder verarbeitet werden kann.
Zu diesem Behufe dachte ich mir, sei das StringBuilder-Object genau das Richtige, jedoch weit gefehlt.
Am Beginn läuft alles prima, doch mitten drinnen, wird nix mehr gemacht.
Zum besseren Verständnis hier mal mein Code:
Noch kurz die Ausgabe:
Ist das ein Fehler des StringBuilders, oder habe ich einen Fehler den ich nicht sehe?
lg
DocRandom
Ich wandle mit Hilfe des HTMLEditorKit, eine HTML-Site nach ASCII.
Das funzt auch ganz gut.
Danach möchte ich den Text wieder aufbereiten, damit er von einer (in PHP gecodeten) Web-Page wieder verarbeitet werden kann.
Zu diesem Behufe dachte ich mir, sei das StringBuilder-Object genau das Richtige, jedoch weit gefehlt.
Am Beginn läuft alles prima, doch mitten drinnen, wird nix mehr gemacht.
Zum besseren Verständnis hier mal mein Code:
Code:
package scanner;
import java.io.IOException;
import java.io.StringReader;
import java.util.Scanner;
import javax.swing.text.BadLocationException;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
import com.meterware.httpunit.WebResponse;
public class HtmlToText {
private HTMLEditorKit htmlKit;
private HTMLDocument doc;
public HtmlToText() {
htmlKit = new HTMLEditorKit();
doc = (HTMLDocument)htmlKit.createDefaultDocument();
doc.putProperty("IgnoreCharsetDirective", new Boolean(true));
}
public String getText(WebResponse resp) {
String plaintxt ="";
try {
htmlKit.read(new StringReader(resp.getText()), doc, 0);
plaintxt = getFormatedText(doc.getText( 0, doc.getLength()));
}catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return plaintxt;
}
private String getFormatedText(String s){
boolean kololine = false;
boolean tableline = false;
String tab = s.replaceAll("\n", "\t");
StringBuilder sb = new StringBuilder();
Scanner sc = new Scanner(tab).useDelimiter("\t");
while (sc.hasNext()) {
String word = sc.next();
word = word.trim();
// wir finden "Das Universum - unendliche Weiten"
if (word.equalsIgnoreCase("Das Universum - unendliche Weiten")) {
sb.append(word);
sb.append("\n");
continue;
}
// wir finden die Galaxy - Zeile
if(word.startsWith("Galax")) {
sb.append(word);
sb.append("\n");
continue;
}
// wir finden evtl. Nebel-Zeile
if(word.endsWith("Nebel)")) {
sb.append(word);
sb.append("\n\n");
continue;
}
// wir finden das up/down - menu
if(word.startsWith("<-- ")) {
sb.append(word);
sb.append("\n");
continue;
}
// wir finden die Tabellenüberchrift
if(word.startsWith("Kolonie")) {
tableline = true;
}
// Zeile vollstänidg zusammen setzen
if (tableline == true) {
sb.append(word);
if(word.startsWith("Aktion")) {
tableline = false;
sb.append("\n");
} else {
sb.append("\t");
}
continue;
}
// auf Bildzeile prüfen
if (word.startsWith("0")&&(kololine == false)) {
sb.append(word);
sb.append("\t\n");
continue;
}
if(word.startsWith("1")&&(kololine == false)) {
kololine = true;
sb.append("\n");
}
// den rest zusammensetzen
sb.append(word);
if(word.endsWith("versenden")) {
sb.append("\n");
} else {
sb.append("\t");
}
}
return sb.toString();
}
}
Noch kurz die Ausgabe:
..bis zum 8. Planeten, läuft alles wunderbar, danach ist es aus und es wird wieder alles in einer Wurst dargestellt!System: 220 erfolgreich gescannt
< < < < < < < < < < < < < < < HILFE Postit erstellen Systemmeldung Nicht so fix Das Universum < Das Universum - unendliche Weiten
Galaxy 3, Sonnensystem 220
RON-E7029 (Roter Nebel)
<-- Galaxie Sonnensystem -->
Kolonie Planetentyp Objekttyp Name Allianztag Planetenname Punkte Aktionen
0
1 Gasgigant --- - 0 Flotte versenden
2 Steinklumpen --- - 0 Flotte versenden
3 Steinklumpen --- - 0 Flotte versenden
4 Steinklumpen --- - 0 Flotte versenden
5 Steinklumpen --- - 0 Flotte versenden
6 Asteroid --- - 0 Flotte versenden
7 Steinklumpen --- - 0 Flotte versenden
8 Steinklumpen Kolonie therealzeus [Kilrathy] Haltern 44070 Flotte versenden 9 Steinklumpen --- - 0 Flotte versenden 10 Eisplanet --- - 0 Flotte versenden 11 Steinklumpen 5 Flotte(n) Kolonie -=DocRandom=- [Kilrathy] Fünfhaus 60939 Flotte versenden 12 Gasgigant Sammelbasis RONIN [ROCKETEERS] (HC) Ressourcensammelbasis 0 Flotte versenden 13 Steinklumpen Kolonie fauli euphorie 117447 Flotte versenden 14 Steinklumpen --- - 0 Flotte versenden 15 Eisplanet --- - 0 Flotte versenden 16 Steinklumpen Kolonie masterminder [Gnome] beta 122108 Flotte versenden 17 Steinklumpen --- - 0 Flotte versenden 18 Steinklumpen Kolonie Nightflyer [Kilrathy] Ragnarok 101259 Flotte versenden 19 Steinklumpen --- - 0 Flotte versenden Fünfhaus (3:220:11) Borussia MG (3:211:12) 02.11.2007 22:26:43 Rückkehr Fünfhaus (3:220:11) Borussia MG (3:211:12) 02.11.2007 22:27:07 Rückkehr Fünfhaus (3:220:11) Borussia MG (3:211:12) 02.11.2007 22:43:10 Rückkehr Fünfhaus (3:220:11) Borussia MG (3:211:12) 02.11.2007 23:09:05 Rückkehr Fünfhaus (3:220:11) Erdberg (3:199:13) 03.11.2007 03:00:01 Rückkehr
Ist das ein Fehler des StringBuilders, oder habe ich einen Fehler den ich nicht sehe?
lg
DocRandom