Laboratorio_1_SD_II.doc
-
Upload
victor-paz-quintana -
Category
Documents
-
view
212 -
download
0
description
Transcript of Laboratorio_1_SD_II.doc
Universidad Inca Garcilaso de la Vega
Laboratorio Nro. 01
Procesando XML
I. Competencia General:
Comprender la forma como se manipula los contenidos de los documentos Extensible Markup Language (XML).
Utilizar un lenguaje de programación para analizar contenidos validos, bien formados y estructuralmente correctos para integrar a aplicaciones XML.
II. Funciones definidas sobre Parser en PHP
Estas funciones son extensiones que permite crear intérpretes de XML y definir entonces gestores para diferentes eventos XML. Cada intérprete XML tiene también unos cuantos parámetros que se pueden ajustar.
Los gestores de eventos XML definidos son:
xml_set_element_handler(): Los eventos de elemento ("element") se producen cuando el intérprete XML encuentra etiquetas de comienzo o fin. Hay gestores separados para etiquetas de comienzo y etiquetas de fin.
xml_set_character_data_handler(): La información de caracteres es, por definición, todo el contenido no "marcado" de los documentos XML, incluidos los espacios en blanco entre etiquetas. Nota que el intérprete XML no añade o elimina ningún espacio en blanco, depende de la aplicación (de ti) decidir si el espacio en blanco es significativo.
xml_set_processing_instruction_handler(): Los programadores de PHP deberían estar ya familiarizados con las instrucciones de procesado (PI). <?php ?> es una instrucción de procesado, donde php se denomina el "objetivo de procesado".
xml_set_default_handler(): Todo lo que no va a otro gestor, va al gestor por defecto. Se tendrán en el gestor por defecto cosas como las declaraciones de tipos de documento y XML
xml_set_unparsed_entity_decl_handler(): Este gestor se llamará para la declaración de una entidad no analizada (NDATA).
xml_set_notation_decl_handler(): Este gestor se llama para la declaración de una anotación.
xml_set_external_entity_ref_handler(): Este gestor se llama cuando el intérprete XML encuentra una referencia a una entidad general interpretada
externa. Puede ser una referencia a un archivo o URL, por ejemplo
III. Manipulación de Archivos XML
3.1 Si esta bien formado o Mal formado
Función: xml_parser_create ()
Esta función crea un analizador XML y devuelve un índice para usarlo con otras funciones XML. Devuelve FALSE en caso de fallo.
Carpeta: ejemplo01Archivo: validar.php
<?php $xml = "<nombre>Juan Carlos Miranda</nombre>"; $parser = xml_parser_create (); if (xml_parse ($parser, $xml, true)) print ("Tu Documento esta bien formado."); else print ("Tu Documento no es bien formado."); xml_parser_free ($parser);?>
Figura 01: Resultado cuando esta bien formado
3.2 Controlador CDATA
Carpeta: ejemplo02Archivo: controlador.php
<?php function cdata_handler ($parser, $data) { print ($data); } $xml = "<nombre>Carlos Alberto </para>"; $parser = xml_parser_create (); xml_set_character_data_handler ($parser, 'cdata_handler'); if (xml_parse ($parser, $xml, true)) print ("Tu Documento esta bien formado."); else print ("Tu Documento NO esta bien formado."); xml_parser_free ($parser);?>
Curso: Sistemas Distribuidos II Pag. - 1 -
Universidad Inca Garcilaso de la Vega
Figura 02: Muestra Data y su Formación
3.3 Lectura de documentos XML
a) Utilizando función simplexml_load_file para cargar archive XML
Carpeta: ejemplo03Archivo: controlador.phpArchivo XML: contact.xml
Archivo: controlador.php<?php $xml = simplexml_load_file("contact.xml"); var_dump($xml); ?>
Archivo XML contact.xml<?xml version="1.0" ?> <contact id="43956"> <personal> <name> <first>Juan</first> <middle>Alejandro</middle> <last>Torrés</last> </name> <title>Administrador</title> <employer>Universidad Inca Garcilazo de la Vega</employer> <dob>1951-02-02</dob> </personal></contact>
Figura 03: Muestra el contenido del documento en un arreglo
b) Utilizando función simplexml_load_file para cargar archive XML e imprimir contenido
Carpeta: ejemplo03Archivo: cargaimprime.phpArchivo XML: books.xml
Archivo: cargaimprime. php<?php $xml = simplexml_load_file("books.xml"); echo htmlspecialchars($xml->asXML());?>
Archivo XML: books.xml<?xml version="1.0" ?> <library> <book> <title>A</title> <author gender="female">B</author> <description>C</description> </book> <book> <title>C</title> <author gender="male">D</author> <description>E</description> </book> <book> <title>F</title> <author gender="male">G</author> <description>H</description> </book></library>
Figura 04: Muestra el contenido según estructura y datos
3.4 Rutas de Nodos y Datos en Documentos XML
a) Programa que muestra el valor de la ruta de un nodo
Carpeta: ejemplo04Archivo: rutanodo.phpArchivo XML: contact.xml
rutanodo.php<?php $xml = simplexml_load_file("contact.xml"); $authors = $xml->xpath("/contact/personal/title"); foreach($authors AS $author) { echo "$author<br />"; }?>
Archivo XML contact.xml<?xml version="1.0" ?> <contact id="43956"> <personal> <name> <first>Juan</first> <middle>Alejandro</middle> <last>Torrés</last> </name> <title>Administrador</title>
Curso: Sistemas Distribuidos II Pag. - 2 -
Universidad Inca Garcilaso de la Vega
<employer>Universidad Inca Garcilazo de la Vega</employer> <dob>1951-02-02</dob> </personal></contact>
Figura 05: Muestra el valor del Nodo
c) Muestra un valor predefinido
Carpeta: ejemplo04Archivo: rutadefinida.phpArchivo XML: contact.xml
Archivo: rutadefinida.php<?php $xml = simplexml_load_file("contact.xml"); $book = $xml->xpath("/contact/personal[title='Administrador']"); echo $book[0]->title;?>
Archivo: contact.xml<?xml version="1.0" ?> <contact id="43956"> <personal> <name> <first>Juan</first> <middle>Alejandro</middle> <last>Torrés</last> </name> <title>Administrador</title> <employer>Universidad Inca Garcilazo de la Vega</employer> <dob>1951-02-02</dob> </personal></contact>
Figura 06: Muestra el valor predefinido
3.5 Imprimiendo atributos de un documento XML
Carpeta: ejemplo05Archivo: atributos.phpArchivo XML: contact.xml
Archivpo: atributos.php<?php $xml = simplexml_load_file("libros.xml"); foreach($xml->book[1]->author->attributes() AS $a => $b) { echo "$a = $b <br />"; }?>
contact.xml<library> <book> <title>A</title> <author gender="female">B</author> <description>C</description> </book> <book> <title>C</title> <author gender="male">D</author> <description>E</description> </book> <book> <title>F</title> <author gender="male">G</author> <description>H</description> </book></library>
Figura 07: Muestra el atributo y su valor
Anexo A: CODIFICACION
UnicodeEl Estándar Unicode es un estándar de codificación de caracteres. Actualmente es una codificación reconocida por Unicode y lenguajes web.
UTF-8 (8-bit Unicode Transformation Format) es un formato de codificación de caracteres Unicode.
ISO 8859-1Es una norma de la ISO que define la codificación del alfabeto latino, incluyendo los diacríticos (como letras acentuadas, ñ, ç), y letras especiales (como ß, Ø), necesarios para la escritura de las siguientes lenguas originarias de Europa occidental: afrikáans, alemán, aragonés, asturiano, castellano, catalán, danés, escocés, español, feroés, finés, francés, gaélico, gallego, inglés, islandés, italiano, neerlandés, noruego, portugués, sueco y Euskera.
En XML ejemplos:
<?xml version="1.0" encoding="UTF-8"?>
Curso: Sistemas Distribuidos II Pag. - 3 -
Universidad Inca Garcilaso de la Vega
<?xml version="1.0" encoding="ISO-8859-1"?>
Anexo B: FUNCIONES PHP
xml_parse:Inicia un intérprete sobre un documento XML.Analiza un documento XML.
htmlspecialchars:Convierte caracteres especiales en entidades HTML
xml_parser_create:Crea un intérprete XML
xml_parser_free:Liberar una analizador XML
foreach:Funciona sólo sobre arrays y objetos.Recorre el array dado por expresión_array.En cada iteración, el valor del elemento actual se asigna a $valor y el puntero interno del array avanza una posición.
xpath:Ejecuta una petición XPath (ruta) sobre los datos XML
var_dump:Vuelca información sobre una variable
Universidad Inca Garcilaso de la VegaFACULTAD DE INGENIERÍA DE SISTEMAS, CÓMPUTO y TELECOMUNICACIONESDocente: MSc. Daniel Alejandro Yucra SotomayorLima, septiembre, del 2012Consultas: [email protected]
Curso: Sistemas Distribuidos II Pag. - 4 -