java xml saxparser stax

java - ¿Qué es el "Enfoque de inserción" y el "Enfoque de extracción" para analizar?



xml saxparser (3)

Básicamente, un impulso es cuando el analizador le dice a un manejador: "Tengo un foo, haz algo con él". Un tirón es cuando el controlador le dice al analizador, "dame el siguiente foo".

Empujar:

if (myChar == ''('') handler.handleOpenParen(); // push the open paren to the handler

Halar:

Token token = parser.next(); // pull the next token from the parser

Bajo el enfoque de análisis de inserción, un analizador de inserción genera eventos sincrónicos a medida que se analiza un documento, y una aplicación puede procesar estos eventos utilizando un modelo de controlador de devolución de llamada.

Este es el texto que figura en el libro Pro XML Development with Java sobre SAX 2.0.

En cuanto a StAX, el libro dice:

Bajo el enfoque de extracción, los eventos se extraen de un documento XML bajo el control de la aplicación mediante el analizador.

Quiero preguntar, ¿cuál es el significado del texto resaltado? Una respuesta acorde con un principiante es apreciada :)


Empujadores de análisis : los eventos son generados por la API en forma de funciones de devolución de llamada como startDocument (), endDocument () y están fuera del control del programador. Nosotros, como programadores, podemos manejar los eventos, pero la generación de eventos está fuera de control.

Extraer analizadores : los eventos se generan cuando llamamos a algunos API. Ejemplo mostrado abajo. Así que nosotros como programadores podemos decidir cuándo generar eventos.

int eventType = xmlr.getEventType(); while(xmlr.hasNext()){ eventType = xmlr.next(); //Get all "Book" elements as XMLEvent object if(eventType == XMLStreamConstants.START_ELEMENT && xmlr.getLocalName().equals("Book")){ //get immutable XMLEvent StartElement event = getXMLEvent(xmlr).asStartElement(); System.out.println("EVENT: " + event.toString()); } }

, El cliente solo obtiene (extrae) datos XML cuando lo solicita explícitamente.

Con el análisis de extracción, el cliente controla el subproceso de la aplicación y puede llamar a métodos en el analizador cuando sea necesario. Por el contrario, con el procesamiento push, el analizador controla el subproceso de la aplicación y el cliente solo puede aceptar invocaciones desde el analizador.


análisis de inserción: es donde el analizador envía los eventos de análisis a la aplicación, posiblemente utilizando métodos de devolución de llamada. La aplicación puede procesarse de forma asíncrona después de llamar a cualquier método del analizador, de modo que si el analizador toma tiempo, la aplicación no se bloquea en ese punto. Tan pronto como se complete el análisis, el analizador, a través de su evento de devolución de llamada, activará la aplicación para que la aplicación pueda continuar con el resultado del análisis.

análisis de extracción: cuando la aplicación arrastra los datos en lugar de esperar los eventos de análisis. La aplicación puede extraer los datos de una en una, de acuerdo con sus requisitos. Al igual que en el StAX, la aplicación llama al método next () de forma iterativa para obtener el siguiente constructo en XML.