SAX Parser - Visão geral

SAX (a API Simples para XML) é um analisador baseado em eventos para documentos xml. Ao contrário de um analisador DOM, um analisador SAX não cria nenhuma árvore de análise. SAX é uma interface de streaming para XML, o que significa que os aplicativos que usam SAX recebem notificações de eventos sobre o documento XML que está sendo processado - um elemento e atributo, em um momento em ordem sequencial, começando na parte superior do documento e terminando com o fechamento de o elemento ROOT.

  • Lê um documento XML de cima para baixo, reconhecendo os tokens que constituem um documento XML bem formado.

  • Os tokens são processados ​​na mesma ordem em que aparecem no documento.

  • Relata o programa de aplicativo, a natureza dos tokens que o analisador encontrou à medida que ocorrem.

  • O programa de aplicação fornece um manipulador de "evento" que deve ser registrado com o analisador.

  • Conforme os tokens são identificados, os métodos de retorno de chamada no manipulador são chamados com as informações relevantes.

Quando usar?

Você deve usar um analisador SAX quando -

  • Você pode processar o documento XML de maneira linear de cima para baixo.

  • O documento não está profundamente aninhado.

  • Você está processando um documento XML muito grande, cuja árvore DOM consumirá muita memória. Implementações típicas de DOM usam dez bytes de memória para representar um byte de XML.

  • O problema a ser resolvido envolve apenas parte do documento XML.

  • Os dados estão disponíveis assim que são vistos pelo analisador, portanto, SAX funciona bem para um documento XML que chega por meio de um fluxo.

Desvantagens de SAX

  • Não temos acesso aleatório a um documento XML, pois ele é processado apenas para frente.

  • Se você precisar controlar os dados que o analisador viu ou alterar a ordem dos itens, deverá escrever o código e armazenar os dados por conta própria.

Interface ContentHandler

Essa interface especifica os métodos de retorno de chamada que o analisador SAX usa para notificar um programa de aplicativo sobre os componentes do documento XML que ele viu.

  • void startDocument() - Chamado no início de um documento.

  • void endDocument() - Chamado no início de um documento.

  • void startElement(String uri, String localName, String qName, Attributes atts) - Chamado no início de um elemento.

  • void endElement(String uri, String localName,String qName) - Chamado no final de um elemento.

  • void characters(char[] ch, int start, int length) - Chamado quando os dados do personagem são encontrados.

  • void ignorableWhitespace( char[] ch, int start, int length) - Chamado quando um DTD está presente e um espaço em branco ignorável é encontrado.

  • void processingInstruction(String target, String data) - Chamado quando uma instrução de processamento é reconhecida.

  • void setDocumentLocator(Locator locator)) - Fornece um localizador que pode ser usado para identificar posições no documento.

  • void skippedEntity(String name) - Chamado quando uma entidade não resolvida é encontrada.

  • void startPrefixMapping(String prefix, String uri) - Chamado quando um novo mapeamento de namespace é definido.

  • void endPrefixMapping(String prefix) - Chamado quando uma definição de namespace termina seu escopo.

Interface de atributos

Esta interface especifica métodos para processar os atributos conectados a um elemento.

  • int getLength() - Retorna o número de atributos.

  • String getQName(int index)

  • String getValue(int index)

  • String getValue(String qname)