Capitulos de este wiki
  1. 1 ¿Qué es un Parser XML?
  2. 2 ¿Cómo se clasifican los parsers?
  3. 3 Espacios de nombres
  4. 4 Usos típicos

Parsing xml: sax y dom - ¿Cómo se clasifican los parsers?

2 - ¿Cómo se clasifican los parsers?

[editar]
Curso gratis creado por Carlos Castillo. Extraido de: http://www.tejedoresdelweb.com/307/article-2146.html
18 de Octubre de 2005
Se clasifican en SAX y DOM.

También se hace distinción entre los que son Validantes y los No Validantes. Los primeros verifican que el documento, además de estar bien formado de acuerdo a las reglas de XML, responda a una estructura definida en una DTD.

SAX Parsers

SAX significa Simple API for XML. Un parser SAX tiene una interfaz del estilo:

saxParse( documento, f_inicio_elemento, f_fin_elemento, f_texto )

En que los principales argumentos son punteros a funciones. Estas funciones serán ejecutadas por el parser cuando él se encuentre con un elemento inicial, con uno final, o con texto.

Por ejemplo, en el documento <p>Hola <b>mundo</b></p>, si ejecuto saxParse( documento, fstart, fend, ftext ), se produce la siguiente secuencia de invocaciones:

fstart(http://www.w3.org/TR/REC-xml-names/"p")
ftext("Hola")
fstart("b")
ftext("mundo")
fend("b")
fend("p")DOM Parsers

DOM significa Document Object Model. Un parser DOM tiene una interfaz del estilo:

nodoRaiz = domParse( documento )

Y lo que produce es un árbol de nodos, en el ejemplo anterior, produciría algo así, considerando una notación tipo LISP:

(p "Hola" (b "mundo"))

En que el primer elemento de las listas es la raíz.

Comparación

Un SAXParser es una herramienta más versátil, más veloz y menos potente que un DOMParser. Requiere de mayor programación hacer algo útil con ella, pero puede ser muy buena idea si por ejemplo, lo que interesa es rescatar un fragmento de un documento, buscar sólo un elemento en particular.

En contraste, un DOMParser es menos versátil, más lento, pero una vez usado no tengo que desarrollar nada más. El DOMParser me entrega el árbol construído y listo, así que no necesito nada más para funcionar.

Obviamente, un DOMParser puede implementarse encima de un SAXParser.

nodo_actual = null
define fstart(elemento) := ( nodo_actual
null ) ? nodo_actual = elemento : nodo_actual.agregaHijo( elemento ) define fend(elemento) := nodo_actual = nodo_actual.obtienePadre()
define ftext(texto) := nodo_actual.guardaContenido( texto )
saxParse( document, fstart, fend, ftext )
return nodo_actual

Hay que agregar una serie de salvedades que permiten ir verificando en línea que se cierren todos los elementos que se abran, etc.

Respecto a los atributos: es una extensión de este tipo de parsing.
[editar]

1 opinión

Bueno.

Buena referencia al parsing de xml.

Cursos gratis relacionados con 'Parsing xml: sax y dom'

Dado que XML es un lenguaje establecido ampliamente en la comunidad de desarrolladores Web, existen... Más »

Autor y licencia de 'Parsing xml: sax y dom'


Curso gratis de Carlos Castillo. Extraido de: http://www.tejedoresdelweb.com/307/article-2146.html CopyLeft
Los contenidos de este sitio pueden ser reproducidos solamente bajo estas condiciones. La licencia está respaldada con el registro de propiedad intelectual número 97.125 en Chile y otros países.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.