Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/12/2009, 18:15
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Ayuda cómo leer un xml con simpleXML

Buenas,

Tengo muchos problemas con simpleXML no me llevo bien con él y él tampoco se lleva bien conmigo xD

Mira que me gustan los ficheros XML pero no he conseguido dominar la técnica para leer y acceder a cualquier campo que quiera. Si sois tan amables de ponerme un ejemplo en base a este fichero XML os lo agradecería.

Tengo que decir que pasar un XML a un array lo conseguí pero claro no es lo mismo... que acceder directamente con simpleXML, y leyendo el manual de phpnet no lo he conseguido
http://php.net/manual/en/book.simplexml.php

Código XML
Código xml:
Ver original
  1. <ROOT GMTNow="26.12.2009 21:10:58">
  2. <EVENTS>
  3.     <E DBID="1789167" N="Titulo1" D="26/12/2009 20:05:00" StdEventDate="2009-12-26T20:05:00" StdEventDate_UTC="2009-12-26T20:05:00" SID="7" RID="9" LID="1353">
  4.         <G DBID="16347728" EID="1789167" N="titulo1.1" GT="7701">
  5.             <R DBID="58871633" N="titulo1.1.1" O="aaa"/>
  6.             <R DBID="58871634" N="titulo1.1.2" O="bbb"/>
  7.         </G>
  8.         <G DBID="16347729" EID="1789167" N="titulo1.2" GT="7353">
  9.             <R DBID="58871635" N="titulo1.2.1" O="aaa"/>
  10.             <R DBID="58871636" N="titulo1.2.2" O="bbb"/>
  11.         </G>
  12.     </E>
  13.     <E DBID="1774810" N="titulo2" D="26/12/2009 21:30:00" StdEventDate="2009-12-26T21:30:00" StdEventDate_UTC="2009-12-26T21:30:00" SID="11" RID="9" LID="211">
  14.         <G DBID="16296973" EID="1774810" N="titulo2.1" GT="262">
  15.             <R DBID="58710872" N="titulo2.1.1" O="aaa"/>
  16.             <R DBID="58710873" N="titulo2.1.2" O="bbb"/>
  17.         </G>
  18.             <G DBID="16339245" EID="1774810" N="titulo2.2" GT="104">
  19.             <R DBID="58847315" N="titulo2.2.1" O="aaa"/>
  20.             <R DBID="58847316" N="titulo2.2.2" O="bbb"/>
  21.         </G>
  22.             <G DBID="16345937" EID="1774810" N="titulo2.3" GT="3887">
  23.             <R DBID="58866743" N="titulo2.3.1" O="aaa"/>
  24.             <R DBID="58866744" N="titulo2.3.2" O="bbb"/>
  25.         </G>
  26.     </E>
  27.     <E DBID="1786215" N="titulo3" D="27/12/2009 19:30:00" StdEventDate="2009-12-27T19:30:00" StdEventDate_UTC="2009-12-27T19:30:00" SID="7" RID="28" LID="854">
  28.         <G DBID="16295540" EID="1786215" N="titulo3.1" GT="66">
  29.             <R DBID="58707046" N="titulo3.1.1" O="aaa"/>
  30.             <R DBID="58707047" N="titulo3.1.2" O="bbb"/>
  31.         </G>
  32.         <G DBID="16295549" EID="1786215" N="titulo3.2" GT="7970">
  33.             <R DBID="58707064" N="titulo3.2.1" O="aaa"/>
  34.             <R DBID="58707065" N="titulo3.2.2" O="bbb"/>
  35.         </G>
  36.         <G DBID="16295550" EID="1786215" N="titulo3.3" GT="2225">
  37.             <R DBID="58707066" N="titulo3.3.1" O="aaa"/>
  38.             <R DBID="58707067" N="titulo3.3.2" O="bbb"/>
  39.             <R DBID="58707068" N="titulo3.3.3" O="ccc"/>
  40.             <R DBID="58707069" N="titulo3.3.4" O="ddd"/>
  41.             <R DBID="58707070" N="titulo3.3.5" O="eee"/>
  42.             <R DBID="58707071" N="titulo3.3.6" O="fff"/>
  43.             <R DBID="58707072" N="titulo3.3.7" O="ggg"/>
  44.             <R DBID="58707073" N="titulo3.3.8" O="hhh"/>
  45.             <R DBID="58707074" N="titulo3.3.9" O="iii"/>
  46.             <R DBID="58707075" N="titulo3.3.10" O="jjj"/>
  47.             <R DBID="58707076" N="titulo3.3.11" O="kkk"/>
  48.             <R DBID="58707077" N="titulo3.3.12" O="lll"/>
  49.         </G>
  50.         <G DBID="16329206" EID="1786215" N="titulo3.4" GT="7698">
  51.             <R DBID="58820167" N="titulo3.4.1" O="aaa"/>
  52.             <R DBID="58820168" N="titulo3.4.2" O="bbb"/>
  53.         </G>
  54.         <G DBID="16329207" EID="1786215" N="titulo3.5" GT="6710">
  55.             <R DBID="58820169" N="titulo3.5.1" O="aaa"/>
  56.             <R DBID="58820170" N="titulo3.5.2" O="bbb"/>
  57.         </G>
  58.     </E>
  59. </EVENTS>
  60. </ROOT>

SCRIPT

Código PHP:
Ver original
  1. <?php
  2. if (file_exists('data_forosdelweb.xml')){
  3.     $xml = simplexml_load_file('data_forosdelweb.xml');
  4.     echo '<pre>';
  5.     //print_r($xml);
  6.     echo '</pre>';
  7.    
  8.     foreach ($xml->EVENTS as $evento) {
  9.         echo '<pre>';
  10.         //print_r($evento);
  11.         echo '</pre>';
  12.         echo $evento[0]->DBID, '<br />';
  13.     }
  14.    
  15. } else {
  16.     exit('Failed to open data_forosdelweb.xml.');
  17. }
  18. ?>

El script anterior no me muestra nada por pantalla.
Si descomento la linea //print_r($xml); muestra la siguiente información

Código:
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [GMTNow] => 26.12.2009 21:10:58
        )

    [EVENTS] => SimpleXMLElement Object
        (
            [E] => Array
                (
                    [0] => SimpleXMLElement Object
                        (
                            [@attributes] => Array
                                (
                                    [DBID] => 1789167
                                    [N] => Titulo1
                                    [D] => 26/12/2009 20:05:00
                                    [StdEventDate] => 2009-12-26T20:05:00
                                    [StdEventDate_UTC] => 2009-12-26T20:05:00
                                    [SID] => 7
                                    [RID] => 9
                                    [LID] => 1353
                                )

                            [G] => Array
                                (
                                    [0] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [DBID] => 16347728
                                                    [EID] => 1789167
                                                    [N] => titulo1.1
                                                    [GT] => 7701
                                                )

                                            [R] => Array
                                                (
                                                    [0] => SimpleXMLElement Object
                                                        (
                                                            [@attributes] => Array
                                                                (
                                                                    [DBID] => 58871633
                                                                    [N] => titulo1.1.1
                                                                    [O] => aaa
                                                                )

                                                        )

                                                    [1] => SimpleXMLElement Object
                                                        (
                                                            [@attributes] => Array
                                                                (
                                                                    [DBID] => 58871634
                                                                    [N] => titulo1.1.2
                                                                    [O] => bbb
                                                                )

                                                        )

                                                )

                                        )

                                    [1] => SimpleXMLElement Object
                                        (
                                            [@attributes] => Array
                                                (
                                                    [DBID] => 16347729
                                                    [EID] => 1789167
                                                    [N] => titulo1.2
                                                    [GT] => 7353
                                                )

                                            [R] => Array
                                                (
                                                    [0] => SimpleXMLElement Object
                                                        (
                                                            [@attributes] => Array
                                                                (
                                                                    [DBID] => 58871635
                                                                    [N] => titulo1.2.1
                                                                    [O] => aaa
                                                                )

                                                        )

                                                    [1] => SimpleXMLElement Object
                                                        (
                                                            [@attributes] => Array
                                                                (
                                                                    [DBID] => 58871636
                                                                    [N] => titulo1.2.2
                                                                    [O] => bbb
                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

NOTA: He cortado parte de la salida porque excede el numero máximo de caracteres permitidos en el post.                    

)
Muchas gracias de antemano!