Foros del Web » Programando para Internet » PHP »

Como parsear XML enviado por get

Estas en el tema de Como parsear XML enviado por get en el foro de PHP en Foros del Web. Que tal Me mandan una url con el siguiente formato www.misitio.com/index.php?variable=<?xml version="1.0" encoding="UTF-8" ?><clientes><total>2</total>..................</clientes> La cosa es como hago tomar ese xml y parsearlo?....
  #1 (permalink)  
Antiguo 06/11/2008, 14:10
 
Fecha de Ingreso: marzo-2006
Mensajes: 41
Antigüedad: 18 años, 1 mes
Puntos: 0
Como parsear XML enviado por get

Que tal
Me mandan una url con el siguiente formato
www.misitio.com/index.php?variable=<?xml version="1.0" encoding="UTF-8" ?><clientes><total>2</total>..................</clientes>
La cosa es como hago tomar ese xml y parsearlo?.
  #2 (permalink)  
Antiguo 06/11/2008, 14:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como parsear XML enviado por get

Hola Juampi J. Parada,

Usa $_GET['variable'] para obtener la cadena XML, luego puedes usar un parser como SimpleXML para obtener los datos.

Saludos.
  #3 (permalink)  
Antiguo 06/11/2008, 14:17
Avatar de Deschamps  
Fecha de Ingreso: octubre-2008
Mensajes: 257
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Como parsear XML enviado por get

¿¿Y no puedes convencerlos para que te lo manden de otra forma?? Porque eso es casi una aberración :)

Un saludo.
  #4 (permalink)  
Antiguo 07/11/2008, 07:16
 
Fecha de Ingreso: marzo-2006
Mensajes: 41
Antigüedad: 18 años, 1 mes
Puntos: 0
Gracias por las respuestas chicos, pero sabes cual es el problema que cuando hago un el $GET_['variable'] esto me trae solo los datos. Por ejemplo:

Cuando hago un:
Código PHP:
echo $_GET['variable']; 
de esta url:
http://www.misitio.com/index.php?variable<?xml version="1.0" encoding="UTF-8" ?><Clientes><total>2</total></Clientes>

me muestra:
2

Se entiende?

Al enviar estos caracteres <></> por get php elimina todo lo que contentan ellos y por eso cuando tomo esa variable me trae solo los datos y no todo el xml completo, mi pregunta es : ¿Como puedo hacer para recibir por get etiquetas html <></> ?, seguramente hay alguna configuracion de php que lo permita.

Última edición por GatorV; 07/11/2008 a las 09:03
  #5 (permalink)  
Antiguo 07/11/2008, 09:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como parsear XML enviado por get

Mmmm mas bien es como te hagan el envío, la variable debe de estar correctamente escapada, por ejemplo en PHP, utilizas urlencode() para codificar la variable correctamente, es por eso que la variable tiene que venir asi limpia, para que con PHP la puedas tomar.

Ahora si solo haces un echo $_GET['variable'] sobre un archivo html, se van a interpretar las etiquetas y es por eso que solo te da 2, si quieres ver el XML lo mejor es algo así:
Código php:
Ver original
  1. <?php
  2. header("Content-type: text/plain");
  3. echo $_GET['variable'];

Saludos.
  #6 (permalink)  
Antiguo 07/11/2008, 13:45
 
Fecha de Ingreso: marzo-2006
Mensajes: 41
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Como parsear XML enviado por get

Gracias por tu ayuda GatorV.
El echo del $_GET['variable'] solo lo hacia para para ver el contenido pero cuando quiero parsearlo el xml usando el simpleXML, como vos me indicaste, me tira varios errores.
Si ese mismo xml que mando por get lo levanto de un archivo no hay problema.

Código PHP:

<?php
$xmlstr
=$_GET[variable];

$xml simplexml_load_string($xmlstr);

echo 
$xml->clientes->total;
?>

Última edición por Juampi J. Parada; 10/11/2008 a las 10:25
  #7 (permalink)  
Antiguo 07/11/2008, 14:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como parsear XML enviado por get

Que "varios errores" te lanza?

Saludos.
  #8 (permalink)  
Antiguo 10/11/2008, 10:53
 
Fecha de Ingreso: marzo-2006
Mensajes: 41
Antigüedad: 18 años, 1 mes
Puntos: 0
Respuesta: Como parsear XML enviado por get

Gracias GatorV

El problema es que cuando hago el urldecode($_REQUEST['variable']) , este me devuelve el xml completo pero me agrega una barra invertida \ <?xml version=\"1.0\" encoding=\"UTF-8\" ?><Pedidos><canttotal>2</canttotal><ped... y creo que por eso despues cuando se lo mando a simplexml_load_string($xmlstr) me tira error.





Código PHP:
<?php
header
("Content-type: text/plain");

$xmlstr=urldecode($_REQUEST['variable']);

$xml simplexml_load_string($xmlstr);

echo 
$xml->clientes->total;
?>
Los errores son:

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : String not started expecting ' or " in C:\wamp\www\....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: <?xml version=\"1.0\" encoding=\"UTF-8\" ?><Pedidos><canttotal>2</canttotal><ped in C:\wamp\www\.....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\wamp\www\.....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Malformed declaration expecting version in C:\wamp\www\.....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: <?xml version=\"1.0\" encoding=\"UTF-8\" ?><Pedidos><canttotal>2</canttotal><ped in C:\wamp\www\....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\wamp\www\GeMovil_WebService\xml\ejemplo_simpleX ML\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Blank needed here in C:\wamp\www\.....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: <?xml version=\"1.0\" encoding=\"UTF-8\" ?><Pedidos><canttotal>2</canttotal><ped in C:\wamp\www\.....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\wamp\www\..........\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : parsing XML declaration: '?>' expected in C:\wamp\www\........\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: <?xml version=\"1.0\" encoding=\"UTF-8\" ?><Pedidos><canttotal>2</canttotal><ped in C:\wamp\www\....\parseaXML2.php on line 25

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in C:\wamp\www\.....parseaXML2.php on line 25
  #9 (permalink)  
Antiguo 10/11/2008, 11:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Como parsear XML enviado por get

Usa stripslashes para escapar las barras invertidas.

Saludos.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:05.