SAX Parser Character Puffer zu klein

Status
Nicht offen für weitere Antworten.

Kiamur

Aktives Mitglied
Hallo!

Ich benutze den SAX Parser, um ein XML Dokument auszuwerten. Es funktioniert auch alles perfekt, bis auf die Kleinigkeit, dass der Character Puffer der Methode
Code:
public void characters(char buf[], int offset, int len)
nur 2048 Bytes groß ist.
Der Puffer wird irgendwie nie geleert, und wenn der offset kurz vor 2048 steht und offset+len größer als 2048 ist, dann wird der String einfach an der 2048 abgeschnitten. Wenn die Methode das nächste mal aufgerufen wird, dann wird der Puffer wieder von 0 an gefüllt, und dann steht da auch tatsächlich der Rest des Strings drin, aber leider erst beim nächsten Aufruf.

Kennt jemand von euch das Problem, und hat eine Lösung dafür?

Gruß
Maik
 
das ist ein Problem, es ist jedem SAXParser erlaubt das so zu machen!

Lösung: in seiner "Zustandsmaschine" alle nacheinanderkommenden characters Events in einem StringBuffer sammeln - und dann bei einem NICHT-characters das ganze abspeichern, das geht nicht anders
Code:
if(lastEventWasCharacters){
   // zum vorhandenen StringBuffer dazu
}else{
   // neuen StringBuffer erzeugen und gleich dazu
}
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben