Foros del Web » Programando para Internet » PHP »

parsear xml con SimpleXml

Estas en el tema de parsear xml con SimpleXml en el foro de PHP en Foros del Web. hola a todos, necesito mostrar los datos que obtengo en formato xml desde una url, algo que nunca he hecho, resulta que googleando encontré que ...
  #1 (permalink)  
Antiguo 27/01/2011, 08:06
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 10 meses
Puntos: 209
parsear xml con SimpleXml

hola a todos, necesito mostrar los datos que obtengo en formato xml desde una url, algo que nunca he hecho, resulta que googleando encontré que con SimpleXml lo podia hacer y encontré un ejemplo donde a este xml

$xml = simplexml_load_file('http://www.inmoclick.com.ar/xml_inmo/listado.xml.php?usr_id=2027&offset=10')

echo $xml->datos->valor->tipo;
me devuelve bien todos los tipos que existen
ahora si quisiera acceder a los atributos que estan dentro de valor, por ejemplo prp_id, como debería hacer ????


<XMLTEXTO>
<datos total='10' porPagina='10' cantidadPaginas='1' paginaActual=''>
<valor prp_id="27" pesos="0" dolares="0">
<tipo>
<![CDATA[Finca-Viñedo]]>
</tipo>
<condicion>
<![CDATA[Venta]]>
</condicion>
<domicilio>
<![CDATA[57 Acres (23 Hectares) San Martin | Mendoza ]]>
</domicilio>
<img>
<![CDATA[foto.php?foto=fotos/27-1533-1.gif]]>
</img>
<foto>
<![CDATA[27-1533-1.gif]]>
</foto>
<foto2>
<![CDATA[27-1533-2.gif]]>
</foto2>
<prpid>
<![CDATA[27]]>
</prpid>
<pesos>
<![CDATA[0]]>
</pesos>
<dolares>
<![CDATA[0]]>
</dolares>
<domicilio2>
<![CDATA[57 Acres (23 Hectares)]]>
</domicilio2>
<localidad>
<![CDATA[San Martin]]>
</localidad>
<provincia>
<![CDATA[Mendoza]]>
</provincia>
<prp_desc>
<![CDATA[inmueble con las caracteristicas…..]]>
</prp_desc>
<prp_nota><![CDATA[]]></prp_nota>
</valor>
</datos>
<XMLTEXTO>
  #2 (permalink)  
Antiguo 27/01/2011, 13:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: parsear xml con SimpleXml

Pasa por el área de aportes de este foro, hay un tema que te puede ayudar con lo que quieres hacer.
__________________
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 28/01/2011, 10:24
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: parsear xml con SimpleXml

Hola de nuevo con xml: esto te va A SERVIR:

Código PHP:
Ver original
  1. $xml="<XMLTEXTO>
  2. <datos total='10' porPagina='10' cantidadPaginas='1' paginaActual=''>
  3. <valor prp_id='27' pesos='0' dolares='0'></valor></datos>
  4. </XMLTEXTO>";
  5. $XMLTEXTO=simplexml_load_string($xml);
  6.   toXML($XMLTEXTO);
  7.       function toXML($XMLTEXTO){
  8.               foreach($XMLTEXTO->datos  as $dato ){
  9.                   echo $dato['total'].' <br />';      
  10.                   echo $dato['porPagina'].' <br />';      
  11.                   echo $dato['cantidadPaginas'].' <br />';
  12.                   echo $dato['paginaactual'].' <br />';    
  13.                   echo $dato->valor['prp_id'].' <br />';    
  14.                   echo $dato->valor['pesos'].' <br />';    
  15.                   echo $dato->valor['dolares'].' <br />';    
  16.                  
  17.               }
  18.       }

Última edición por Patriarka; 28/01/2011 a las 10:40
  #4 (permalink)  
Antiguo 28/01/2011, 21:52
 
Fecha de Ingreso: enero-2011
Mensajes: 15
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: parsear xml con SimpleXml

Con el siguiente código XML:

<?xml version="1.0"?>
<gsmrs version="2.0" sport="soccer" lang="en" last_generated="2011-01-29 04:44:33"> <method method_id="11" name="get_matches_live"><parameter name="detailed" value="yes"/><parameter name="lang" value="en"/><parameter name="minutes" value="yes"/><parameter name="now_playing" value="yes"/>
</method>
</gsmrs>

Me marca el siguiente error:
Warning: Invalid argument supplied for foreach() in C:\AppServ\www\trabajos\dejabus\index.php on line 41

Tengo la función así:

function toXML($XMLTEXTO){
foreach($XMLTEXTO->gsmrs as $dato ){
echo $dato['version'].' <br />';
echo $dato['sport'].' <br />';
echo $dato['lang'].' <br />';
echo $dato['last_generated'].' <br />';
}
}


¿Cuál será el problema?
¡Muchas gracias!
  #5 (permalink)  
Antiguo 28/01/2011, 22:32
 
Fecha de Ingreso: enero-2011
Mensajes: 15
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: parsear xml con SimpleXml

Listo, ya lo corregí, sin embargo, en la función:

function toXML($XMLTEXTO){
foreach($XMLTEXTO->gsmrs as $dato ){
echo $dato['version'].' <br />';
echo $dato['sport'].' <br />';
echo $dato['lang'].' <br />';
echo $dato['last_generated'].' <br />';
}
}

No me regresa los datos:

2.0
soccer
en
2011-01-29 04:44:33

Sino que deja la página en blanco...
¿Cuál podría ser el error?
  #6 (permalink)  
Antiguo 30/01/2011, 07:50
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: parsear xml con SimpleXml

Cita:
Iniciado por phalavi18 Ver Mensaje
Listo, ya lo corregí, sin embargo, en la función:

function toXML($XMLTEXTO){
foreach($XMLTEXTO->gsmrs as $dato ){
echo $dato['version'].' <br />';
echo $dato['sport'].' <br />';
echo $dato['lang'].' <br />';
echo $dato['last_generated'].' <br />';
}
}

No me regresa los datos:

2.0
soccer
en
2011-01-29 04:44:33

Sino que deja la página en blanco...
¿Cuál podría ser el error?
HOLA, NO TE FUNCIONA POR QUE $XMLTEXTO YA NO ES EL PADRE.

AHORA EL PADRE ES gsmrs

SERIA ASI:

$gsmrs= (LEER EL .XML)

echo $gsmrs['version'].' <br />';
echo $gsmrs['sport'].' <br />';
echo $gsmrs['lang'].' <br />';
echo $gsmrs['last_generated'].' <br />';

NADA MAS SIN FOR NI NADA.

Etiquetas: simplexml, xml, parse
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 12:54.