Originariamente inviato da sbondi
ma ho un Exception:java.lang.ArrayIndexOutOfBoundsException :
apena finisco il parse.
Sai mica cosa possa essere?
No, non ho idea perché dovrei analizzare bene il sorgente.
Comunque tu fai:
fileItems.addElement(buf.toString());
E lo fai in characters(). NO. Il buffer completo di tutto il testo contenuto nel tag lo puoi avere solo quando trovi il tag di chiusura, ovvero quando ti viene invocato endElement() per quello stesso elemento.
Quindi un esempio (molto abbozzato) che (ri)usa in modo intelligente lo StringBuffer è:
codice:
private StringBuffer buf = new StringBuffer();
private boolean interessaContenuto;
public void startElement(String uri, String localName, String qName, Attributes attributes) {
interessaContenuto = false;
if (qName.equalsIgnoreCase("Name")) {
interessaContenuto = true;
}
// ... altri eventuali test ...
if (interessaContenuto) {
buf.setLength(0);
}
}
public void characters(char[] ch, int start, int length) {
if (interessaContenuto) {
buf.append(ch, start, length);
}
}
public void endElement(String uri, String localName, String qName) {
if (qName.equalsIgnoreCase("Name")) {
String contenutoDiName = buf.toString(); // <---- Qui ho il contenuto!!!
.....
}
}