Programación con PHP 5 – 8.3 PARSING XML

8.3 PARSING XML
El proceso de parsing necesita al menos de estos elementos :
– Una declaracion de un esquema XML
– Un documento XML
– Código para procesar el documento.


        $this->miparser = xml_parser_create("UTF-8");
        xml_set_object($this->miparser, $this); //Se usa solo cuando el parser esta dentro de un objeto
        xml_set_element_handler($this->miparser, "startSimpleDoc", "endSimpleDoc");
        xml_set_character_data_handler($this->miparser, "caracterDataSimpledoc");
        $filexml = file_get_contents("datosx.xml");
        xml_parse($this->miparser, $filexml);
        xml_parser_free($this->miparser);

Para el ejemplo hemos creado una clase y dentro de ella tenemos un atributo miparser que sera el objeto parser y en el código es accesado de la forma usual $this->miparser. Se usa la función xml_set_object() para asociar el parser a al objeto que lo contiene.


function startSimpleDoc($xml, $tag, $attributes) {

        if (strcasecmp($tag, "Persona") == 0) {
            echo "<h3><font color="blue">";
        } elseif (strcasecmp($tag, "FirstName") == 0) {
            echo "<b>";
        }
    }

    function endSimpleDoc($xml, $tag) {

        if (strcasecmp($tag, "Persona") == 0) {
            echo "</font></h3>";
        } elseif (strcasecmp($tag, "FirstName") == 0) {
            echo "</b>";
        }
    }

    function caracterDataSimpledoc($xml, $data) {
        if (trim($data))
        //echo "Primer nombre: "" . htmlspecialchars($data).""n";
            echo $data;
    }

Según el código anterior se tiene las funciones startSimpleDoc, endSimpleDoc y caracterDataSimpledoc las que estarán encargadas del procesamiento del documento XML.

<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xsd:element name="Persona" type="xsd:string"/>
<xsd:element name="FirstName" type="xsd:string"/>
</xsd:schema>

La declaración del esquema XML tiene extensión .xsd y se guardará en el directorio raiz del sitio por simplicidad de este ejemplo y lo guardaremos con el nombre docsimple.xsd. Un esquema XML es usado para definir los elementos y atributos del lenguaje que se crea y reemplaza la definición de tipo de documento (DTD), la que es otra forma de de definir etiquetas para su uso en documentos XML.
Este esquema contendrá dos elementos simples Persona y FirstName que serán de tipo String.


<?xml version="1.0"?>
<raiz xmlns:xsi="http://www.w3.org/2000.10.XMLSchema-instance"
xsi:noNamespaceSchemaLocation="docsimple.xsd">
<Persona>Cliente 1</Persona>
<FirstName>Bob</FirstName>
<Persona>Cliente 2</Persona>
<FirstName>Doug</FirstName>
<Persona>Cliente 3</Persona>
<FirstName>Noel</FirstName>
</raiz>

Este documento XML se guardará en el directorio raiz del sitio por simplicidad de este ejemplo y lo guardaremos con el nombre datosx.xml.
Como todo documento XML comienza con la declaración XML.
Luego en el tag raiz se establece la referencia al esquema XML a usar con el atributo xsi:SchemaLocation declara el espacio de nombre, el cual apunta a la ubicación del archivo que contiene el esquema asociado al documento.

El objetivo es obtener una página HTML con los datos del documento XML y con un formato apropiado, en este caso muy básico.
Si se quiere tener una mejor presentación de la información se deberá usar una Hoja de Estilos XSLT que tiene la extensión .xsl.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s