Analizador SAX - Descripción general
SAX (la API simple para XML) es un analizador basado en eventos para documentos xml. A diferencia de un analizador DOM, un analizador SAX no crea un árbol de análisis. SAX es una interfaz de transmisión para XML, lo que significa que las aplicaciones que utilizan SAX reciben notificaciones de eventos sobre el documento XML que se está procesando: un elemento y un atributo, a la vez en orden secuencial, comenzando en la parte superior del documento y terminando con el cierre de el elemento ROOT.
Lee un documento XML de arriba a abajo, reconociendo los tokens que componen un documento XML bien formado.
Los tokens se procesan en el mismo orden en que aparecen en el documento.
Informa el programa de aplicación, la naturaleza de los tokens que el analizador ha encontrado a medida que ocurren.
El programa de aplicación proporciona un controlador de "eventos" que debe registrarse con el analizador.
A medida que se identifican los tokens, los métodos de devolución de llamada en el controlador se invocan con la información relevante.
¿Cuándo usar?
Debería utilizar un analizador SAX cuando:
Puede procesar el documento XML de forma lineal de arriba a abajo.
El documento no está profundamente anidado.
Está procesando un documento XML muy grande cuyo árbol DOM consumirá mucha memoria. Las implementaciones DOM típicas usan diez bytes de memoria para representar un byte de XML.
El problema a resolver involucra solo una parte del documento XML.
Los datos están disponibles tan pronto como los ve el analizador, por lo que SAX funciona bien para un documento XML que llega a través de una secuencia.
Desventajas de SAX
No tenemos acceso aleatorio a un documento XML, ya que se procesa solo de manera reenviada.
Si necesita realizar un seguimiento de los datos que el analizador ha visto o cambiar el orden de los elementos, debe escribir el código y almacenar los datos por su cuenta.
Interfaz ContentHandler
Esta interfaz especifica los métodos de devolución de llamada que utiliza el analizador SAX para notificar a un programa de aplicación de los componentes del documento XML que ha visto.
void startDocument() - Llamado al comienzo de un documento.
void endDocument() - Llamado al comienzo de un documento.
void startElement(String uri, String localName, String qName, Attributes atts) - Llamado al comienzo de un elemento.
void endElement(String uri, String localName,String qName) - Llamado al final de un elemento.
void characters(char[] ch, int start, int length) - Llamado cuando se encuentran los datos del personaje.
void ignorableWhitespace( char[] ch, int start, int length) - Se llama cuando hay un DTD presente y se encuentran espacios en blanco ignorables.
void processingInstruction(String target, String data) - Se llama cuando se reconoce una instrucción de procesamiento.
void setDocumentLocator(Locator locator)) - Proporciona un localizador que se puede utilizar para identificar posiciones en el documento.
void skippedEntity(String name) - Se llama cuando se encuentra una entidad sin resolver.
void startPrefixMapping(String prefix, String uri) - Se llama cuando se define una nueva asignación de espacio de nombres.
void endPrefixMapping(String prefix) : Se llama cuando una definición de espacio de nombres finaliza su alcance.
Interfaz de atributos
Esta interfaz especifica métodos para procesar los atributos conectados a un elemento.
int getLength() - Devuelve el número de atributos.
String getQName(int index)
String getValue(int index)
String getValue(String qname)