Foros del Web » Programando para Internet » PHP »

parsear xml

Estas en el tema de parsear xml en el foro de PHP en Foros del Web. Buenas noches foreros, tengo una pregunta, estoy tratando de imprimir un xml que me viene como respuesta a una peticion de google maps, les paso ...
  #1 (permalink)  
Antiguo 29/04/2011, 16:38
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 17 años, 11 meses
Puntos: 0
parsear xml

Buenas noches foreros, tengo una pregunta, estoy tratando de imprimir un xml que me viene como respuesta a una peticion de google maps, les paso el xml y les explico lo que necesito parsear:
Código:
<kml xmlns="http://earth.google.com/kml/2.0">
  <Response>
    <name>1600 amphitheatre mountain view ca</name>
    <Status>
      <code>200</code>
      <request>geocode</request>
    </Status>
    <Placemark>
      <address> 
        1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA
      </address>
      <AddressDetails Accuracy="8">
        <Country>
          <CountryNameCode>US</CountryNameCode>
          <AdministrativeArea>
            <AdministrativeAreaName>CA</AdministrativeAreaName>
           <SubAdministrativeArea>
             <SubAdministrativeAreaName>Santa Clara</SubAdministrativeAreaName>
             <Locality>
               <LocalityName>Mountain View</LocalityName>
               <Thoroughfare>
                 <ThoroughfareName>1600 Amphitheatre Pkwy</ThoroughfareName>
               </Thoroughfare>
               <PostalCode>
                 <PostalCodeNumber>94043</PostalCodeNumber>
               </PostalCode>
             </Locality>
           </SubAdministrativeArea>
         </AdministrativeArea>
       </Country>
     </AddressDetails>
     <Point>
       <coordinates>-122.083739,37.423021,0</coordinates>
     </Point>
   </Placemark>
  </Response>
</kml>
Yo necesito parsear el PostalCodeNumber, pero no puedo entrar al nodo, esto es lo que estoy usando, pero sin exito:
Código:
$xml = simplexml_load_file($request_url) or die("url not loading");

    $status = $xml->Response->Status->code;
    if (strcmp($status, "200") == 0) {
      // Successful geocode
      $geocode_pending = false;
     // $coordinates = $xml->Response->Placemark->address;
      $postcode =    $xml->Response->Placemark->AddressDetails->PostslCode;
    
      
      
    //  echo $coordinates;
      echo $postcode;
faltan un par de }, pero la idea es que me puedan dar una mano con como sacarlo.

Mil gracias!!!
  #2 (permalink)  
Antiguo 29/04/2011, 19:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: parsear xml

Podrias ir yendo de nodo en nodo pero al final se vera raro en codigo, mejor usa XPath:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $xml = <<<XML
  4. <kml xmlns="http://earth.google.com/kml/2.0">
  5.   <Response>
  6.     <name>1600 amphitheatre mountain view ca</name>
  7.     <Status>
  8.       <code>200</code>
  9.       <request>geocode</request>
  10.     </Status>
  11.     <Placemark>
  12.       <address>
  13.         1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA
  14.       </address>
  15.       <AddressDetails Accuracy="8">
  16.         <Country>
  17.           <CountryNameCode>US</CountryNameCode>
  18.           <AdministrativeArea>
  19.             <AdministrativeAreaName>CA</AdministrativeAreaName>
  20.            <SubAdministrativeArea>
  21.              <SubAdministrativeAreaName>Santa Clara</SubAdministrativeAreaName>
  22.              <Locality>
  23.                <LocalityName>Mountain View</LocalityName>
  24.                <Thoroughfare>
  25.                  <ThoroughfareName>1600 Amphitheatre Pkwy</ThoroughfareName>
  26.                </Thoroughfare>
  27.                <PostalCode>
  28.                  <PostalCodeNumber>94043</PostalCodeNumber>
  29.                </PostalCode>
  30.              </Locality>
  31.            </SubAdministrativeArea>
  32.          </AdministrativeArea>
  33.        </Country>
  34.      </AddressDetails>
  35.      <Point>
  36.        <coordinates>-122.083739,37.423021,0</coordinates>
  37.      </Point>
  38.    </Placemark>
  39.   </Response>
  40. </kml>
  41. XML;
  42.  
  43. $xml = str_replace("xmlns=", "ns=", $xml);
  44. $handle = simplexml_load_string($xml);
  45. var_dump($handle->xpath("//PostalCodeNumber"));
  46.  
  47.  
  48. ?>

Es solo una prueba para que veas como funciona ;)
  #3 (permalink)  
Antiguo 29/04/2011, 22:02
 
Fecha de Ingreso: mayo-2006
Mensajes: 124
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: parsear xml

Hey, gracias, pero no la tengo muy clara con esto del xml, me parece que yo recibo el xml como respuesta de un 'pedido' que le hago al geocodificador de google ......
se entiende?
  #4 (permalink)  
Antiguo 29/04/2011, 23:18
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: parsear xml

Solo te mostre un ejemplo de como acceder a los datos. Independientemente de donde vengan, para obtener el dato que deseas es lo mismo.
Lo puse en una cadena solo para ilustrar y verificar que funcionaba.

Etiquetas: parsear, xml
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 07:45.