Hallo zusammen,
folgendes Problem:
Ich habe ein Programm, dass XML-Dateien liest und an einen Parser weiterreicht:
Soweit keine Probleme.
Die Situation ist jetzt die, dass bestimmte Zeichen im XML umtransformiert werden müssen. Ich möchte das so realisieren, dass der InputStream auf einer tiefen Ebene "manipuliert" wird und möchte verhindern, im Programm mit Stringoperationen herumhampeln zu müssen.
Meine Vorstellung ist die Ableitung der Klasse InputStream, so dass die Zeichentransformierung direkt in der read-Methode der abgeleiteten Klasse stattfindet.
Und die Änderung im aufrufenden Code:
Bisher wird noch nichts transformiert, ich habe einfach nur eine Wrapperklasse über den FileInputStream gestülpt. Funktionieren tut es immernoch genauso wie vorher, mit der Ausnahme, dass die Verarbeitung deutlich länger dauert. Statt 1,8 Sekunden bei einem 7,5 MB XML-File, dauert die Verarbeitung jetzt stolze 9 Sekunden. Dabei habe ich die Transformationsregeln noch gar nicht implementiert.
Kann mir das bitte jemand erklären? Was mache ich falsch?
folgendes Problem:
Ich habe ein Programm, dass XML-Dateien liest und an einen Parser weiterreicht:
Java:
FileInputStream inStream = new FileInputStream(inputPath + "/" + filename);
Object o = JDomProvider.parseXML(inStream);
Soweit keine Probleme.
Die Situation ist jetzt die, dass bestimmte Zeichen im XML umtransformiert werden müssen. Ich möchte das so realisieren, dass der InputStream auf einer tiefen Ebene "manipuliert" wird und möchte verhindern, im Programm mit Stringoperationen herumhampeln zu müssen.
Meine Vorstellung ist die Ableitung der Klasse InputStream, so dass die Zeichentransformierung direkt in der read-Methode der abgeleiteten Klasse stattfindet.
Java:
public class XmlFilterInputStream extends InputStream {
InputStream in;
public XmlFilterInputStream(InputStream in) {
this.in = in;
}
public int read() throws IOException {
// Hier sollen später die Transformationsregeln hin
return in.read();
}
}
Und die Änderung im aufrufenden Code:
Java:
FileInputStream inStream = new FileInputStream(inputPath + "/" + filename);
XmlFilterInputStream filterStream = new XmlFilterInputStream(inStream);
Object o = JDomProvider.parseXML(filterStream);
Bisher wird noch nichts transformiert, ich habe einfach nur eine Wrapperklasse über den FileInputStream gestülpt. Funktionieren tut es immernoch genauso wie vorher, mit der Ausnahme, dass die Verarbeitung deutlich länger dauert. Statt 1,8 Sekunden bei einem 7,5 MB XML-File, dauert die Verarbeitung jetzt stolze 9 Sekunden. Dabei habe ich die Transformationsregeln noch gar nicht implementiert.
Kann mir das bitte jemand erklären? Was mache ich falsch?