Skip to content

12. Tratamiento de documentos XML (simplexml_01)

Considere el siguiente archivo [data.xml]:


<?xml version="1.0" encoding="UTF-8"?>
 
<tribu>
  <teacher>
    <person gender="M">
      <last_name>dupont</last_name>
      <first_name>Jean</first_name>
      <age>28</age>
This is a comment
    </person>
    <section>27</section>
  </teacher>
  <student>
    <person gender="F">
      <last name>martin</last name>
      <first_name>Charline</first_name>
      <age>22</age>
    </person>
    <education>IAIE degree</education>
  </student>
</group>

Analizamos este documento con el siguiente script:


1. <?php
2. 
3. // XML file to process
4. $FILE_NAME = "data.xml";
5. // processing
6. $xml = simplexml_load_file($FILE_NAME);
7. print_r($xml);
8. print_r($xml->teacher->person['gender']);
9. $name = $xml->teacher->person->name;
10. print "name=$name\n";
11. $gender = $xml->teacher->person['gender'];
12. print "gender=$gender\n";
13. $education = $xml->student->education;
14. print "education=$education\n";
15. print "isset=".isset($xml->teacher->person->name)."\n";
16. print "isset=".isset($xml->teacher->person->xx)."\n";

Aquí estamos utilizando un módulo PHP llamado [simpleXML] que nos permite procesar documentos XML.

  • línea 6: cargar el fichero XML
  • línea 7: visualización del documento XML
  • línea 8: visualización del valor del atributo "sexo" de un profesor: <profesor><persona sexo='...'>
  • línea 9: visualización del valor de la primera etiqueta <profesor><persona><nombre>

Resultados

1. SimpleXMLElement Object
2. (
3.     [teacher] => SimpleXMLElement Object
4.         (
5.             [person] => SimpleXMLElement Object
6.                 (
7.                     [@attributes] => Array
8.                         (
9.                             [gender] => M
10.                         )
11. 
12.                     [last_name] => Dupont
13.                     [first_name] => Jean
14.                     [age] => 28
15.                 )
16. 
17.             [section] => 27
18.         )
19. 
20.     [student] => SimpleXMLElement Object
21.         (
22.             [person] => SimpleXMLElement Object
23.                 (
24.                     [@attributes] => Array
25.                         (
26.                             [gender] => F
27.                         )
28. 
29.                     [last_name] => martin
30.                     [first_name] => charline
31.                     [age] => 22
32.                 )
33. 
34.             [Education] => IAIE degree
35.         )
36. 
37. )
38. SimpleXMLElement Object
39. (
40.     [0] => M
41. )
42. name=dupont
43. gender=M
44. education=IAIE design
45. isset=1
46. isset=
  • líneas 1-37: el documento XML en forma de objeto [simpleXML].

El script anterior no nos muestra todas las posibilidades del módulo [simpleXML], pero es suficiente para que podamos escribir una versión definitiva del ejercicio IMPOTS.