Non ho provato il tuo codice (posso farlo se vuoi) ma in linea di massima mi pare corretto, perlomeno il modo di operare è sensato.
Il codice però è un pochino "fragile": il metodo item non lancia eccezioni se l'indice non esiste ma restituisce un bel null e ovviamente getTextContent() su un null causa il NPE.
P.S. non so cosa ci devi fare con quel ArrayList di ArrayList di String .... ti suggerirei di modellare i dati del cliente con una apposita classe.