Originariamente inviato da sbondi
Immagino che dovrei scansionare tutto in un buffer ma non sono molto pratico
Sì, credo di aver capito cosa vuoi fare. Ma vediamo la cosa in generale: hai un tag che contiene del testo. E una volta che, tramite gli eventi, sei arrivato a quel tag vuoi ottenere una stringa con il testo completo contenuto nel tag.
La questione è che characters() ti viene invocato potenzialmente più volte e con una quantità arbitraria di testo volta per volta, che tu non sai a priori.

Quello che si fa generalmente è questo: quando trovi il tag di apertura, istanzi (o svuoti, se vuoi riusarne uno già istanziato) un StringBuffer o StringBuilder. Ad ogni invocazione di characters() semplicemente "appendi" nel buffer i caratteri (e nota bene, in StringBuffer/StringBuilder c'è già un metodo append() apposito che riceve char[]+offset+length, non c'è bisogno di creare un String!!).
Quando trovi il tag di chiusura, hai nel StringBuffer/StringBuilder il tuo bel contenuto del tag.

Se vuoi posso anche abbozzare del codice, ma credo/spero che la descrizione sopra sia chiara.