Foros del Web » Programando para Internet » PHP »

DOM XML, leer XML con PHP

Estas en el tema de DOM XML, leer XML con PHP en el foro de PHP en Foros del Web. Hola chicos! Aunque llevo bastante tiempo visitando forosdelweb, no decidí registrarme hasta ahora. Antes me habia limitado a buscar en los foros problemas que ya ...
  #1 (permalink)  
Antiguo 23/09/2009, 15:36
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
DOM XML, leer XML con PHP

Hola chicos!
Aunque llevo bastante tiempo visitando forosdelweb, no decidí registrarme hasta ahora.
Antes me habia limitado a buscar en los foros problemas que ya tuviesen solución, pero el problema que tengo ahora no lo he visto resuelto en ningun lado..
Consiste en leer un XML con PHP, y mostrar los resultados de forma ordenada, y mostrando solo los diez primeros, me explico:


Siguiendo un tutorial para leer un XML en PHP he conseguido leer varios campos.

Tengo un XML con X pilotos, el cual tiene entre otros valores valores como <Pos> <Name> <Points>...

Añado de muestra un par de pilotos y sus datos, para que podáis tenerlo como referéncia.

Código:
<Driver>
  <Pos>4</Pos> 
  <Name>carles</Name> 
  <Team>Vodafone McLaren Mercedes.</Team> 
  <Points>32</Points> 
  <Gap>7</Gap> 
  <PP>00032</PP> 
  <Starts>7</Starts> 
  <PP_starts>00007</PP_starts> 
  <Poles>0</Poles> 
  <PP_poles>00000</PP_poles> 
  <Wins>2</Wins> 
  <PP_wins>00002</PP_wins> 
  <Podiums>3</Podiums> 
  <PP_podiums>00003</PP_podiums> 
  </Driver>

  <Driver>
  <Pos>1</Pos> 
  <Name>Perera</Name> 
  <Team>Force India F1 Team</Team> 
  <Points>39</Points> 
  <Gap>0</Gap> 
  <PP>00039</PP> 
  <Starts>7</Starts> 
  <PP_starts>00007</PP_starts> 
  <Poles>0</Poles> 
  <PP_poles>00000</PP_poles> 
  <Wins>2</Wins> 
  <PP_wins>00002</PP_wins> 
  <Podiums>3</Podiums> 
  <PP_podiums>00003</PP_podiums> 
  </Driver>
Consigo mostrar los resultados como véis aquí. Mediante el siguiente código:

Código:
<? 
  

  $objDOM = new DOMDocument(); 
  $objDOM->load("DriverChampionship.xml"); //make sure path is correct 


  $driver = $objDOM->getElementsByTagName("Driver"); 
  // for each note tag, parse the document and get values for 
  // tasks and details tag. 

  foreach( $driver as $value ) 
  { 
    $names = $value->getElementsByTagName("Name"); 
    $name  = $names->item(0)->nodeValue; 


    $points = $value->getElementsByTagName("Points"); 
    $point  = $points->item(0)->nodeValue; 

    echo "$name : $point <br>"; 
  } 


?>


Hasta ahora todo bien, ya que solo me interesa el nombre del piloto y los puntos, el problema es que solo quiero que me muestre los diez primeros pilotos, es decir aquellos cuyo valor <Pos> esta entre 0 y 10, y a poder ser ordenados.

Alguna idea?
Gracias de antemano!
Un Saludo!
  #2 (permalink)  
Antiguo 24/09/2009, 05:05
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: DOM XML, leer XML con PHP

ninguna idea?
  #3 (permalink)  
Antiguo 24/09/2009, 05:17
Avatar de sebasnob  
Fecha de Ingreso: enero-2008
Ubicación: Rosario
Mensajes: 27
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: DOM XML, leer XML con PHP

Con esto la podes zafar

Código PHP:
$i=0;
    while(
$i <= 10){
        foreach( 
$driver as $value ) { 
            
$names $value->getElementsByTagName("Name"); 
            
$name  $names->item(0)->nodeValue

            
$points $value->getElementsByTagName("Points"); 
            
$point  $points->item(0)->nodeValue
            
            if(
$value->getElementsByTagName("Pos")->item(0)->nodeValue == $i){    
                echo 
"$name : $point <br>"
            }
        }
        
$i++;
    } 
  #4 (permalink)  
Antiguo 24/09/2009, 05:39
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: DOM XML, leer XML con PHP

Cita:
Iniciado por sebasnob Ver Mensaje
Con esto la podes zafar

Código PHP:
$i=0;
    while(
$i <= 10){
        foreach( 
$driver as $value ) { 
            
$names $value->getElementsByTagName("Name"); 
            
$name  $names->item(0)->nodeValue

            
$points $value->getElementsByTagName("Points"); 
            
$point  $points->item(0)->nodeValue
            
            if(
$value->getElementsByTagName("Pos")->item(0)->nodeValue == $i){    
                echo 
"$name : $point <br>"
            }
        }
        
$i++;
    } 

VIVAAAAAAA!
Muchísimas grácias no pensaba que se pudiese solucionar tan facilmente :)
gracias de verdad!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:31.