Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/09/2009, 15:36
eadt
 
Fecha de Ingreso: septiembre-2009
Mensajes: 3
Antigüedad: 15 años, 4 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!