Foros del Web » Programando para Internet » PHP »

Leer geopoint en XML con PHP

Estas en el tema de Leer geopoint en XML con PHP en el foro de PHP en Foros del Web. Hola a [email protected]; Dentro de un xml tengo una información de geolocalización que no soy capaz de extraer. La información tiene este formato: Código: <geo:point> ...
  #1 (permalink)  
Antiguo 26/08/2011, 06:21
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 4
Pregunta Leer geopoint en XML con PHP

Hola a [email protected];

Dentro de un xml tengo una información de geolocalización que no soy capaz de extraer. La información tiene este formato:
Código:
<geo:point>
         <geo:lat>40.71417</geo:lat>
         <geo:long>-74.00639</geo:long>
</geo:point>
Es una estructura que no había visto nunca y cuando estoy intentando acceder me da error.

¿Alguien sabe como parsear el XML con PHP y extraer esta información?

Saludos.
  #2 (permalink)  
Antiguo 26/08/2011, 07:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 9 meses
Puntos: 1517
Respuesta: Leer geopoint en XML con PHP

Tienes que usar el namespace. Es decir en algún lugar en alguna etiqueta padre debe existir algo como
Código PHP:
Ver original
  1. <etiqueta geo="....">
  2.     //...
  3. </etiqueta>
Pasa por el área de aportes, hay un tema que habla sobre rss y ahí te va a dar una idea de como trabajarlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 26/08/2011, 10:58
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 15 años, 4 meses
Puntos: 4
Respuesta: Leer geopoint en XML con PHP

Hola Abimaelrc;

La verdad es que no existe ninguna información de este tipo.

Aquí te paso el XML del que estoy intentando sacar los datos de geolocalización.

http://ws.audioscrobbler.com/2.0/?me...c220b7b2e0a026

Como verás existe la etiqueta <geo:point>... son etiquetas raras, pues cuando leo el XML con PHP y lo imprimo en pantalla estas etiquetas ni aparecen.

La verdad es que necesito extraer los datos que están en estas etiquetas y no encuentro nada de como hacerlo...

Saludos.
  #4 (permalink)  
Antiguo 26/08/2011, 12:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 8 años, 7 meses
Puntos: 793
Respuesta: Leer geopoint en XML con PHP

Hola @forecast, como te dice abimaelrc tienes que usar namespaces ejemplo:

Código PHP:
Ver original
  1. <?php
  2. $xml = simplexml_load_file('http://ws.audioscrobbler.com/2.0/?method=geo.getevents&location=madrid&api_key=b25b959554ed76058ac220b7b2e0a026');
  3. $geo = $xml->getNamespaces(true);
  4. $xml->registerXPathNamespace('g', $geo['geo']);
  5. $lat = $xml->xpath('//g:lat');
  6. $long = $xml->xpath('//g:long');
  7.  
  8. foreach ($lat as $c => $v) {
  9.     echo $v . ' ' . $long[$c] . '<br />';
  10. }

Así tienes todas las latitudes y longitudes. Saludos
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 27/08/2011, 02:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 8 años, 7 meses
Puntos: 793
De acuerdo Respuesta: Leer geopoint en XML con PHP

Dejo otra forma de solucionar esto por si te sirve o le sirve a alguien más:

Código PHP:
Ver original
  1. <?php
  2. $xml = new SimpleXMLElement('http://ws.audioscrobbler.com/2.0/?method=geo.getevents&location=madrid&api_key=b25b959554ed76058ac220b7b2e0a026', null, true);
  3. $ns = $xml->getNamespaces(true);
  4. foreach ($xml->events->event as $event) {
  5.     $point = $event->venue->location->children($ns['geo'])->point;
  6.     echo $point->lat . ' ' . $point->long . '<br />';
  7. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 27/08/2011 a las 11:13 Razón: Tomando en cuenta consejo de un colaborador

Etiquetas: 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 21:58.