SAX
Simple API for XML Processing
Descrição
• Especificação desenvolvida por membros lista de
discussão XML-DEV criada em maio de 1998
• Lê o documento de forma seqüencial
descartando as informações a medida em que
são analisadas
• Proporciona maior desempenho
• Tipicamente utilizada para ler documentos
• Modelo de processamento baseados em eventos
2
Eventos
• Um evento é gerado assim que uma marcação
é encontrada (start tag, end tag, ...)
• Parsers baseados em SAX invocam métodos a
medida que determinados eventos ocorrem
• Programadores devem sobrescrever tais
métodos para processar o documento
3
Métodos SAX
• setDocumentLocator: invocado no início do parsing
• startDocument: invocado quando é encontrado o início de um
documento
• endDocument: invocado quando é encontrado o fim do documento
• startElement: invocado quando a tag de início de um elemento é
encontrada
• endElement: invocado quando a tag de fim de um elemento é
encontrada
• characters: invocado quando é encontrado texto
• ignorableWhitespace: invocado quando é encontrado espaço em
branco que pode ser ignorado
• processingInstruction: invocado quando é encontrada uma
instrução de processamento
4
Modelo Conceitual
• Documento XML -> SAX Parser -> eventos
Documento
XML
SAX Parser
5
Exemplo
EVENTOS gerados:
• Documento XML
1. startDocument
2. startElement (livro)
<?xml version=“1.0”?> 3. Characters (white space)
<livro> 4. startElement (titulo)
<titulo>Calculo</titulo> 5. characters (Calculo)
6. endElement (titulo)
<autor>Munem</autor> 7. characters (white space)
</livro> 8. startElement(autor)
9. characters (Munem)
10. endElement (autor)
11. characters (white space)
12. endElement(livro)
13. endDocument
6
SAX versus DOM
• DOM – padrão oficial (W3C)
• SAX – padrão de fato
• SAX descarta a informação assim que esta é processada
• Consome menos memória do que DOM e é mais
eficiente
• Não permite retroceder na estrutura do documento
• Modelo de programação mais complexo
• SAX é ideal para documentos que devem ser
processados linearmente mas não é indicado para
situações nas quais seja necessário alterar os dados e
“navegar” na estrutura do documento
7
Links
ESPECIFICAÇÃO do SAX. Disponível em:
[Link]
Tutorial J2EE. Disponível em:
[Link]
JAXP Using SAX. Disponível em:
[Link]
[Link]
XML API: DOM e SAX. Disponível em:
[Link]
004.1/[Link]
8