Como parar de analisar o documento xml com o SAX a qualquer momento?

Eu analiso um documento xml grande com Sax, eu quero parar de analisar o documento quando alguma condição estabelecer? Como fazer?

Crie uma especialização de um SAXException e jogue-o (você não precisa criar sua própria especialização, mas isso significa que você pode especificamente pegá-lo e tratar outros SAXExceptions como erros reais).

public class MySAXTerminatorException extends SAXException { ... } public void startElement (String namespaceUri, String localName, String qualifiedName, Attributes attributes) throws SAXException { if (someConditionOrOther) { throw new MySAXTerminatorException(); } ... } 

Não estou ciente de um mecanismo para anular a análise SAX diferente da técnica de lançamento de exceção descrita por Tom . Uma alternativa é mudar para o uso do analisador StAX (consulte pull x push ).

Eu uso uma variável booleana ” stopParse ” para consumir os ouvintes, já que não gosto de usar o throw new SAXException() ;

 private boolean stopParse; article.getChild("title").setEndTextElementListener(new EndTextElementListener(){ public void end(String body) { if(stopParse) { return; //if stopParse is true consume the listener. } setTitle(body); } }); 

Atualizar:

@PanuHaaramo, assumindo ter esse .xml

  
Jorgesys
Android
Java

o analisador para obter o valor de “título” usando o Android SAX deve ser:

  import android.sax.Element; import android.sax.EndTextElementListener; import android.sax.RootElement; ... ... ... RootElement root = new RootElement("root"); Element article= root.getChild("article"); article.getChild("title").setEndTextElementListener(new EndTextElementListener(){ public void end(String body) { if(stopParse) { return; //if stopParse is true consume the listener. } setTitle(body); } });