Laboratorio_1_SD_II.doc

5
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: ejemplo01 Archivo: 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); Curso: Sistemas Distribuidos II Pag. - 1 -

description

Laboratorio_1_SD_II.doc

Transcript of Laboratorio_1_SD_II.doc

Page 1: 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 -

Page 2: Laboratorio_1_SD_II.doc

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 -

Page 3: Laboratorio_1_SD_II.doc

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 -

Page 4: Laboratorio_1_SD_II.doc

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 -