B
bettinayi
Gast
hallo liebe Leute,
mein code funktioniert mit JRE 1.4.2 einwandfrei, aber mit Jre 1.5.0 nicht, vermute wegen der neuen Änderung in jre 1.5.0, ich bin noch zimlich neu in Javaprogrammierung, kann leider den Fehler nicht finden, wäre wirklich sehr sehr dankbar, wenn jemand mir helfen kann :roll:
hier ist mein komplett parser code
mein code funktioniert mit JRE 1.4.2 einwandfrei, aber mit Jre 1.5.0 nicht, vermute wegen der neuen Änderung in jre 1.5.0, ich bin noch zimlich neu in Javaprogrammierung, kann leider den Fehler nicht finden, wäre wirklich sehr sehr dankbar, wenn jemand mir helfen kann :roll:
hier ist mein komplett parser code
Code:
package wetterdienst;
import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
import java.io.*;
public class HttpWeatherParser extends HTMLEditorKit.ParserCallback {
/** The most recently parsed tag. */
private static HTML.Tag currentTag;
/** The last tag encountered. */
private static HTML.Tag lastTag;
/** The beforelast tag encountered. */
// private HTML.Tag beforelastTag;
private static final short STATUS_JUSTBEST = 0;
private static final short STATUS_OK = 1;
private static final short STATUS_BETTER = 2;
private static final short STATUS_BEST = 3;
private static final short STATUS_ERROR = 4;
/**
* The state, will be one of WARNING, ERROR, or OK.
*/
private short state;
private short laststate;
private static final String td_weather = "TAB_BOX_2_BODY";
private BufferedWriter out;
// Konstruktor
public HttpWeatherParser() {
}
public HttpWeatherParser(BufferedWriter out) {
this.out = out;
}
public void handleText(char[] text, int position) {
switch (state) {
case STATUS_JUSTBEST: {
try {
out.write(text);
out.write("\n");
} catch (IOException e) {
System.err.println(e);
}
}
break;
default:
break;
}
}
public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
int position) {
try {
lastTag = currentTag;
currentTag = tag;
laststate = state;
if (currentTag == HTML.Tag.TD
&& lastTag == HTML.Tag.TR
&& attributes.getAttribute(HTML.Attribute.CLASS).equals(
td_weather)) {
state = STATUS_OK;
} else if ((currentTag == HTML.Tag.TABLE && laststate == STATUS_OK)
|| (lastTag == HTML.Tag.TD && currentTag == HTML.Tag.TABLE && laststate == STATUS_JUSTBEST))
state = STATUS_BETTER;
else if ((currentTag == HTML.Tag.TR && laststate == STATUS_BETTER)
|| (lastTag == HTML.Tag.TD && currentTag == HTML.Tag.TR && laststate == STATUS_JUSTBEST))
state = STATUS_BEST;
else if (currentTag == HTML.Tag.TD && laststate == STATUS_BEST) {
state = STATUS_JUSTBEST;
} else
state = STATUS_ERROR;
} catch (Exception e) {
// NICHTS TUN
}
}
public void handleEndTag(HTML.Tag tag, int position) {
try {
if (tag == HTML.Tag.HTML) {
out.flush();
out.close();
}
} catch (IOException e) {
System.err.println(e);
}
}
public static void writeErrordoc(String PHTMLFilepath,
String pOutputFilepath) {
// ParserGetter kit = new ParserGetter();
HTMLEditorKit.Parser parser = new ParserDelegator(); // kit.getParser();
try {
FileInputStream in = new FileInputStream(new File(PHTMLFilepath));
InputStreamReader r = new InputStreamReader(in);
StringWriter sw = new StringWriter();
BufferedWriter fout = new BufferedWriter(sw);
//HTMLEditorKit.ParserCallback
HttpWeatherParser callback = new HttpWeatherParser(fout);
parser.parse(r, callback, true);
BufferedWriter out = new BufferedWriter(new FileWriter(
pOutputFilepath));
out.write(sw.toString());
out.close();
} catch (IOException e) {
System.err.println(e);
}
}
}