PHP y XML

XML es un lenguaje de marcado que se parece mucho a HTML. Un documento XML es texto sin formato y contiene etiquetas delimitadas por <y>. Hay dos grandes diferencias entre XML y HTML:

  • XML no define un conjunto específico de etiquetas que deba utilizar.
  • XML es extremadamente exigente con la estructura del documento.

XML te da mucha más libertad que HTML. HTML tiene un determinado conjunto de etiquetas: las etiquetas <a> </a> rodean un enlace, el párrafo <p> comienza, etc. Sin embargo, un documento XML puede utilizar las etiquetas que desee. Coloque etiquetas <rating> </rating> alrededor de la clasificación de una película, etiquetas <height> </height> alrededor de la altura de alguien. Por lo tanto, XML le da la opción de utilizar sus propias etiquetas.

XML es muy estricto en lo que respecta a la estructura del documento. HTML te permite jugar rápido y suelto con algunas etiquetas de apertura y cierre. Pero este no es el caso de XML.

Lista HTML que no es XML válido

<ul>
   <li>Braised Sea Cucumber
   <li>Baked Giblets with Salt
   <li>Abalone with Marrow and Duck Feet
</ul>

Este no es un documento XML válido porque no hay etiquetas </li> de cierre que coincidan con las tres etiquetas <li> de apertura. Todas las etiquetas abiertas en un documento XML deben cerrarse.

Lista HTML que es XML válido

<ul>
   <li>Braised Sea Cucumber</li>
   <li>Baked Giblets with Salt</li>
   <li>Abalone with Marrow and Duck Feet</li>
</ul>

Analizar un documento XML

PHP 5 es nuevo SimpleXMLEl módulo hace que analizar un documento XML sea sencillo. Convierte un documento XML en un objeto que proporciona acceso estructurado al XML.

Para crear un objeto SimpleXML a partir de un documento XML almacenado en una cadena, pase la cadena a simplexml_load_string( ). Devuelve un objeto SimpleXML.

Ejemplo

Pruebe el siguiente ejemplo:

<html>
   <body>
      
      <?php
         $note=<<<XML
         
         <note>
            <to>Gopal K Verma</to>
            <from>Sairamkrishna</from>
            <heading>Project submission</heading>
            <body>Please see clearly </body>
         </note>
         
         XML;
         $xml=simplexml_load_string($note);
         print_r($xml);
      ?>
		
   </body>
</html>

Producirá el siguiente resultado:

NOTE - Puedes usar la función simplexml_load_file( filename) si tiene contenido XML en un archivo.

Para obtener un detalle completo de la función de análisis de XML, consulte la Referencia de funciones de PHP .

Generando un documento XML

SimpleXML es bueno para analizar documentos XML existentes, pero no puede usarlo para crear uno nuevo desde cero.

La forma más fácil de generar un documento XML es construir una matriz PHP cuya estructura refleje la del documento XML y luego iterar a través de la matriz, imprimiendo cada elemento con el formato apropiado.

Ejemplo

Pruebe el siguiente ejemplo:

<?php
   $channel = array('title' => "What's For Dinner",
      'link' => 'http://menu.example.com/',
      'description' => 'Choose what to eat tonight.');
   
   print "<channel>\n";
   
   foreach ($channel as $element => $content) {
      print " <$element>";
      print htmlentities($content);
      print "</$element>\n";
   }
   
   print "</channel>";
?>

Producirá el siguiente resultado:

http://menu.example.com/ Choose what to eat tonight.