Foros del Web » Programando para Internet » PHP »

problema al recorrer xml con php

Estas en el tema de problema al recorrer xml con php en el foro de PHP en Foros del Web. 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> ...
  #1 (permalink)  
Antiguo 31/08/2009, 10:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 11
Antigüedad: 15 años
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
  #2 (permalink)  
Antiguo 13/09/2009, 23:00
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: problema al recorrer xml con php

Hola
Y en donde tienes el archivo que carga el xml?
es decir, la clase DomDocument?
Pregunto porque si copio tu codigo tal cual me da esto

Warning: DOMDocument::loadXML() [domdocument.loadxml]: Start tag expected, '<' not found in Entity, line: 1 in test.php on line 5

Fatal error: Call to a member function getAttribute() on a non-object in test.php on line 7

y tienes otras cosas asociadas?
Bueno, por ahora podrías revisar esto
Saludos

Última edición por mortiprogramador; 13/09/2009 a las 23:03 Razón: pregunta adicional
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 18:12.