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.