Estás en:   ArielOrtiz.com > Desarrollo de aplicaciones distribuidas > Laboratorio 4: XML

Laboratorio 4: XML

Objetivos

Durante esta práctica, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Introducción

A continuación se resume la manera de procesar un documento de XML (Extensible Markup Language) desde Python utilizando el API de minidom, que es una versión ligera de la interfaz de DOM (Document Object Model).

Para parsear un documento de XML existen dos opciones: desde un archivo o directamente desde un string.

from xml.dom.minidom import parse, parseString

# parsear un documento XML indicando su nombre de archivo
dom1 = parse('mis_datos.xml') 

# parsear an documento XML desde un string
dom2 = parseString('<mixml>Unos datos<vacio/> mas datos</mixml>')

En los ejemplos anteriores, las variables dom1 y dom2 contienen una referencia al nodo raíz de un árbol de DOM que fue generado al momento de parsear los documentos de XML. Todos los nodos de dichos árboles de DOM son objetos de Python que cuentan con los siguientes campos y métodos:

Nombre Descripción
nodeType Campo que indica como entero el tipo de este nodo. Puede ser uno de los siguientes valores definidos en la clase xml.dom.Node:

Node.ELEMENT_NODE (1)
Node.ATTRIBUTE_NODE (2)
Node.TEXT_NODE (3)
Node.COMMENT_NODE (8)
Node.DOCUMENT_NODE (9)

nodeName Campo que indica como string el nombre de este nodo.
nodeValue Campo que indica como string el valor de este nodo. Si este nodo no cuenta con un valor, el campo contiene None.
childNodes Campo que contiene una lista de todos los nodos hijos de este nodo.
getElementsByTagName(nombre) Método que devuelve una lista de todos los nodos hijos de este nodo cuyo nombre de etiqueta sea igual a la cadena del parámetero nombre.
attributes Campo que contiene un mapa con los nodos de atributo de este nodo. Si este nodo no cuenta con atributos, el valor del campo es None. El mapa tiene la misma interfaz que los diccionarios de Python. Cada nodo de atributo tiene adicionalmente los siguientes campos: name y value.

Descripción de la actividad

NOTA IMPORTANTE: Las actividades de la práctica se pueden elaborar de manera individual o en parejas. El reporte de la práctica de laboratotio debe ser desarrollado de manera individual.

Para esta práctica crea un directorio llamado xml.

Escribe un script para línea de comando (no CGI) llamado movies.py que reciba como argumento el nombre de un documento XML. Dicho documento tendrá la misma estructura que el archivo movies.xml. El programa debe desplegar en la salida estándar un documento HTML5 que contenga una <table> (sin ningún estilo en particular) conformada por cuatro columnas y un renglón por cada elemento <film> como se muestra a continuación:

Película Año Director Actores
The Godfather 1972 Francis Ford Coppola Marlon Brando, Al Pacino, Diane Keaton
... ... ... ...

¿Qué se debe entregar?

Para entregar tu trabajo individual, sigue las siguientes instrucciones:

Fecha límite: Martes, Septiembre 20.

Evaluación

Esta actividad será evaluada usando los siguientes criterios:

50% Implementación de los requerimientos.
50% Reporte de la práctica de laboratorio.
DA El programa y/o reporte es un plagio.
© 1996-2011 por Ariel Ortiz Ramírez (ariel.ortiz@itesm.mx)
Desarrollado en Django | Licencia de Creative Commons | HTML5 válido | CSS válido