Hola!!, estoy integrando un webservice a una page, tengo varios detalles que aún no logro resolver, en este momento acudo a ustedes para solicitar su ayuda, al parsear un documento XML obtengo registros repetidos no porque se haga mal el parseo sino que los resultados proporcionados por el webservice así son:
Es la estructura de un hotel que va de la siguiente forma:
<hotels>
<hotel>
<hotelid>3</hotelid>
<hotelnombre>Acamar Beach Resort</hotelnombre>
<ciudad>Acapulco Zona Tradicional</ciudad>
<tipohabitacion>Superior con vista al Mar</tipohabitacion>
<detalles>
<habitaciones>...</habitaciones>
.
.
.
</detalles>
.
.
.
.
</hotel>
<hotel>
<hotelid>3</hotelid>
<hotelnombre>Acamar Beach Resort</hotelnombre>
<ciudad>Acapulco Zona Tradicional</ciudad>
<tipohabitacion>Doble</tipohabitacion>
<detalles>
<habitaciones>...</habitaciones>
.
.
.
</detalles>
.
.
.
.
</hotel>
<hotel>
<hotelid>3</hotelid>
<hotelnombre>Acamar Beach Resort</hotelnombre>
<ciudad>Acapulco Zona Tradicional</ciudad>
<tipohabitacion>Sencilla</tipohabitacion>
<detalles>
<habitaciones>...</habitaciones>
.
.
.
</detalles>
.
.
.
.
</hotel>
</hotels>
Como se darán cuenta hay etiquetas cuyo valor es el mismo pero otras donde es diferente, porque se trata de describir cada una de las habitaciones que corresponden a los hoteles.
Necesito en los resultados del parseo mostrar solamente un registro por cada hotel y y por cada uno mostrar las características que corresponden a cada habitación (aquí si mostrar los diferentes tipos de habitación).
No logro filtrar estos resultados para obtener lo que deseo, lo estoy haciendo de la siguiente forma:
$lista_hoteles=file_get_contents("http://www.miwebservice.com/xml/getQuoteDatos?a=test&password=fuerza&pais=ME&fecha =20100116 .........");
$xml = new SimpleXMLElement($lista_hoteles);
//quiero apoyarme de una variable para detectar el siguiente registro y no mostrarlo
$auxidhotel=0;
foreach($xml->hotels->hotel as $item){
if($auxid<>$item->hotelid){
echo $item->hotelname;
//aqui trato de hacer la otra consulta al WS enviando como parametro el $id del hotel que obtuve de la consulta anterior
$id=$item->hotelid;
$hotel_detalles=file_get_contents("http://www.miwebservice.com/xml/getHotelDetalles?a=test&pwd=fuerza&h=$id");
//aquí voy a mostrar las caracteristicas de cada habitación, que de momento me marca error por tiempo excedido pero ose es otro punto de momento el de mi
//interés es que no se repitan al mostrarlos
$xml_hotel = new SimpleXMLElement($hotel_detalles);
$xml_hotel->detalles->detalle as $item_hotel;
echo $xml_hotel->detalles->detalle->habitaciones;
}
// asigno el hotelid que se acaba de imprimir para continuar comparando
$auxid=$item->hotelid;
}
Pero esto no funciona, sigue mostrando todos los registros, qué me recomiendan??
Desde ya gracias!!