Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2009, 10:40
vg920
 
Fecha de Ingreso: mayo-2009
Mensajes: 11
Antigüedad: 15 años, 9 meses
Puntos: 0
problema al recorrer xml con php

Hola a todos.

Tengo que recorrer el siguiente xml:


Código PHP:

<?xml version="1.0" encoding="utf-8"?>
 <OTA_HotelAvailRS SequenceNmbr="xaiGhd9Adrq18VKow=">
   <Success />
      <RoomStays>
        <RoomStay>
          <RoomRates>
            <RoomRate RatePlanCode="/dfsfdf" RatePlanCategory="Sólo Alojamiento" AvailabilityStatus="AvailableForSale">
    <Rates>
       <Rate NumberOfUnits="3" RateMode="Room">
                      <Total AmountAfterTax="572.16" DecimalPlaces="2" />
                       <RateDescription>
               <Text>Cuádruple</Text>
           </RateDescription>
                       <TPA_Extensions>
                <DailyBreakdown xmlns="">143,04#143,04#143,04#143,04                            </DailyBreakdown>
                <DailyContractNames xmlns="">General#General#General#General</DailyContractNames>
                <ContractTypes xmlns="">RCK</ContractTypes>
                           <RoomType xmlns="">119</RoomType>
                           <Mealplan xmlns="">3</Mealplan>
               </TPA_Extensions>
        </Rate>
    </Rates>
    <Total AmountAfterTax="1716.48" CurrencyCode="USD" DecimalPlaces="2" />                    </RoomRate>
              <RoomRate RatePlanCode="18xHYenjKuAY9" RatePlanCategory="Alojamiento y Desayuno" AvailabilityStatus="AvailableForSale">
    <Rates>
       <Rate NumberOfUnits="3" RateMode="Room">
        <Total AmountAfterTax="715.16" DecimalPlaces="2" />
        <RateDescription>
                <Text>Cuádruple</Text>
                    </RateDescription>
        <TPA_Extensions>
                <DailyBreakdown xmlns="">178,79#178,79#178,79#178,79                             </DailyBreakdown>
                <DailyContractNames xmlns="">General#General#General#General</DailyContractNames>
                <RoomType xmlns="">119</RoomType>
        </TPA_Extensions>
    </Rate>
           </Rates>
        <Total AmountAfterTax="2145.48" CurrencyCode="USD" DecimalPlaces="2" />
     </RoomRate>
   </RoomRates>
   <TimeSpan Start="2009-11-26" End="2009-11-30" />
   <Total CurrencyCode="USD" />
   <BasicPropertyInfo HotelCode="HBE|21" HotelName="Omm" />
   <TPA_Extensions>
          <HotelInfo xmlns="">
    <Category Code="4" CodeDetail="4 Estrellas" />
    <Description><![CDATA[Hotel de diseño situado a una manzana del metro de Diagonal y cerca de las boutiques del Passeig de Gràcia]]></Description>
    <Thumb><![CDATA[/upload_p/Omm/foto1.jpg]]></Thumb>
    <Zone><![CDATA[Rossello 265, 08008 Barcelona, Spain - Barcelona Ciudad]]></Zone>
    <Latitude>41.39591</Latitude>
    <Longitude>2.160784</Longitude>
    <Provider PaymentType="X" Type="S">HBE</Provider>
                <Order>0</Order>
               <BestDeal>0</BestDeal>
                <Home>0</Home>
    <LastMinute>0</LastMinute>
          </HotelInfo>
      </TPA_Extensions>
   </RoomStay>
 </RoomStays>
</OTA_HotelAvailRS>

El problema es que no consigo acceder al atributo AmountAfterTax="2145.48" de Total


alguien podria decirme como acceder a este elemento.

Código PHP:
$dom = new DomDocument;
$dom->preserveWhiteSpace FALSE;
$dom->loadXML($xml_rs);
$OTA_HotelAvailRS $dom->getElementsByTagName"OTA_HotelAvailRS" );
$SequenceNmbr $OTA_HotelAvailRS->item(0)->getAttribute('SequenceNmbr');
$roomstay $OTA_HotelAvailRS->item(0)->getElementsByTagName"RoomStay" );

foreach(
$roomstay as $RoomStay){    
     
$basicpropertyinfo $RoomStay->getElementsByTagName"BasicPropertyInfo" );
     
$HotelName utf8_decode($basicpropertyinfo->item(0)->getAttribute('HotelName'));
     
$HotelCode $basicpropertyinfo->item(0)->getAttribute('HotelCode');
     
$hotelinfo =  $RoomStay->getElementsByTagName"HotelInfo" );
     
$HotelInfo $hotelinfo->item(0)->getElementsByTagName"Category" );
     
$roomrate $RoomStay->getElementsByTagName"RoomRate" );
     foreach(
$roomrate as $RoomRate){    
        
$RatePlanCode $RoomRate->getAttribute('RatePlanCode');
         
$Total $RoomRate->lastChild;   //esto no es correcto pero ¿como lo hago?
         
$AmountAfterTax $Total->getAttribute('AmountAfterTax');
        
$Total_CurrencyCode $Total->getAttribute('CurrencyCode');
        
$rate $RoomRate->getElementsByTagName"Rate" );
            foreach(
$rate as $Rate){    
            
$NumberOfUnits $Rate->getAttribute('NumberOfUnits');
            
$Total_hab $Rate->getElementsByTagName"Total" );
            
$AmountAfterTax_hab $Total_hab->item(0)->getAttribute('AmountAfterTax');
            
$RateDescription $Rate->getElementsByTagName"RateDescription" );     
    
                                                                
$TPA_Extensions $Rate->getElementsByTagName"TPA_Extensions" );
                                                                
$dailybreakdown $TPA_Extensions->item(0)->getElementsByTagName"DailyBreakdown" );    
                                                                
$DailyBreakdown $dailybreakdown->item(0)->nodeValue;
                                                                
                                                                                    
                                                                
                                        
                                                            }
                                                        
                                                 }
                                             } 


Si alguien tiene experiencia en recorrer xml con php y me puede echar una mano se lo agradezco.

Saludos,

Gracias