Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/02/2008, 03:59
juanvivo
 
Fecha de Ingreso: junio-2006
Mensajes: 46
Antigüedad: 18 años, 5 meses
Puntos: 0
xpath para conseguir datos

Hola a todos!

Comence un post en el foro de PHP y alli nos hemos quedado atascados... A ver si aqui hay mas suerte, ya que el XML es el tema central de la duda... ;)

Tengo un codigo XML que os muestro abajo y del que tengo que extraer datos con php.

Código:
<vpt la=1 lo=2>
	<name></name>
	<car></car>
	<gpk:logs>
        	<gpk:log id="39146139">
          		<gpk:date>fecha</gpk:date>
          		<gpk:type>perfecto</gpk:type>
          		<gpk:fin id="1">nombre</gpk:fin>
          		<gpk:text encoded="False">texto 1</gpk:text>
        	</gpk:log>
        	<gpk:log id="34860048">
          		<gpk:date>fecha2</gpk:date>
          		<gpk:type>perfecto</gpk:type>
          		<gpk:fin id="2">nombre2</gpk:fin>
          		<gpk:text encoded="False">Texto2</gpk:text>
        	</gpk:log>
	</gpk:logs>
</vpt>
<vpt la=3 lo=4>
	<name></name>
	<car></car>
	<gpk:logs>
        	<gpk:log id="39149856">
          		<gpk:date>fecha3</gpk:date>
          		<gpk:type>perfecto</gpk:type>
          		<gpk:fin id="3">nombre3</gpk:fin>
          		<gpk:text encoded="False">texto 3</gpk:text>
        	</gpk:log>
        	<gpk:log id="34863261">
          		<gpk:date>fecha4</gpk:date>
          		<gpk:type>perfecto</gpk:type>
          		<gpk:fin id="4">nombre4</gpk:fin>
          		<gpk:text encoded="False">Texto4</gpk:text>
        	</gpk:log>
	</gpk:logs>
</vpt>
Este es el codigo verdadero. Yo necesito mostrar solo los datos que hay entre las etiquetas <gpk:logs></gpk:logs>, pero solo las del primer <vpt>. El problema que tengo es que hago un bucle siguiendo las pistas que me habeis ido dando para mostrarlos asi, por mostraros una de las formas que he probado:

Código:
        	$etiquetas = $xml->xpath( "//c:log" );
		$numero = count ($etiquetas);
		
                for ( $i = 0 ; $i <= $numero ; $i ++){
                
               $ldate = $xml->xpath('//c:date');
	       echo $ldate[$i].'</br>';
Pero esto en vez de mostrarme los date de solo el <gpk:logs> de la primera etiqueta (<vpt la=1 lo=2>) me muestra todos los que hay en todas las etiquetas (fecha1,fecha2,fecha3,fecha4...etc)

Como puedo hacerlo para que solo me devuelva fecha1 y fecha 2 que son los que estan dentro de las primeras <gpk:logs>?

En el otro foro me dicen que juegue con el xpath hasta dar con el bueno que solo me muestre los datos del primer <gpk:logs></gpk:logs>, pero no tengo ni idea de la sintexis de estos querys... Podeis echarme una mano??

MUchisimas gracias por vuestra ayuda.