Alguém consegue explicar melhor como funciona este código? A aula e o javadoc me são um tanto vagos na explicação dos métodos, principalmente o método "characters" que realmente não entendi.
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ProdutosHandler extends DefaultHandler {
private StringBuilder conteudo;
private Produto produto;
private List<Produto> produtos = new ArrayList<>();
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println(qName);
if(qName.equals("produto")) {
produto = new Produto();
}
conteudo = new StringBuilder();
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
conteudo.append(new String(ch,start,length));
System.out.println(start);
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
if(qName.equals("produto")) {
produtos.add(produto);
}else if (qName.equals("nome")) {
produto.nome = conteudo.toString();
}else if (qName.equals("preco")) {
produto.preco = Double.parseDouble(conteudo.toString());
}
}
public List<Produto> getProdutos() {
return produtos;
}
}