Foros del Web » Programando para Internet » PHP »

problemas con explode y xml

Estas en el tema de problemas con explode y xml en el foro de PHP en Foros del Web. Hola Mi sitio esta hosteado en un servidor con php 4 y por tanto me veo imposibilitado de usar simplexml_load_string por lo que he tenido ...
  #1 (permalink)  
Antiguo 29/05/2007, 11:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
problemas con explode y xml

Hola
Mi sitio esta hosteado en un servidor con php 4 y por tanto me veo imposibilitado de usar simplexml_load_string por lo que he tenido que recurrir al explode para trabajar con un xml , el problema es el siguiente , el fichero catalogo.xml si lo copio y lo pego en el script de php en el que lo estoy manipulando , el explode me funciona perfecto , pero si el contenido de este fichero lo leo por metodo POST cuando hago el explode no sale nada ...que pudiera estar pasando?
esta es la forma del fichero:
<model>
<name>pp</name>
<address>pp</address>
<city>Santa maria</city>
<zip>10440</zip>
<email>[email protected]</email>
<creditCard>
<cardNumber></cardNumber>
<cardHolder></cardHolder>
<cardExpMonth>1</cardExpMonth>
<cardExpYear>2006</cardExpYear>
</creditCard>
<shipping>18.99</shipping>
<total>60.9</total>
</model>

asi lo lee bien , y esta es la forma cuando lo recibo por POST:

<model> <name>pp</name> <address>pp</address> <city>Santa maria</city> <zip>10440</zip> <email>[email protected]</email> <creditCard> <cardNumber></cardNumber> <cardHolder></cardHolder> <cardExpMonth>1</cardExpMonth> <cardExpYear>2006</cardExpYear> </creditCard> <shipping>18.99</shipping> <total>60.9</total></model>

Agradeceria cualquier ayuda
saludos
  #2 (permalink)  
Antiguo 29/05/2007, 11:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas con explode y xml

Cual es el codigo que estas utilizando para leer tu XML?
  #3 (permalink)  
Antiguo 29/05/2007, 12:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
Re: problemas con explode y xml

La variable $mensage es la que contiene el xml


$mensaje1= explode( '</name>', $mensage );

$mensaje2= explode( '</address>', $mensage );
$mensaje3= explode( $mensaje1[0], $mensaje2[0] );

$mensaje4= explode( '</city>', $mensage );
$mensaje5= explode( $mensaje3[1], $mensaje4[0] );

$mensaje6= explode( '</zip>', $mensage );
$mensaje7= explode( $mensaje5[1], $mensaje6[0] );

$mensaje8= explode( '</email>', $mensage );
$mensaje9= explode( $mensaje7[1], $mensaje8[0] );

$mensaje10= explode( '</cardNumber>', $mensage );
$mensaje11= explode( $mensaje9[1], $mensaje10[0] );

$mensaje12= explode( '</cardHolder>', $mensage );
$mensaje13= explode( $mensaje11[1], $mensaje12[0] );

$mensaje14= explode( '</cardExpMonth>', $mensage );
$mensaje15= explode( $mensaje13[1], $mensaje14[0] );

$mensaje16= explode( '</cardExpYear>', $mensage );
$mensaje17= explode( $mensaje15[1], $mensaje16[0] );

$mensaje18= explode( '</shipping>', $mensage );
$mensaje19= explode( $mensaje17[1], $mensaje18[0] );

$mensaje20= explode( '</total>', $mensage );
$mensaje21= explode( $mensaje19[1], $mensaje20[0] );

$mensajec .= "Detalles del pedido:
";
$mensajee1= explode( '<model>
<name>', $mensaje1[0] );
$mensajec .= 'Nombre del cliente: '.$mensajee1[1].'
';
$mensajee3= explode( '</name>
<address>', $mensaje3[1] );
$mensajec .= 'Direccion: '.$mensajee3[1].'
';
$mensajee5= explode( '</address>
<city>', $mensaje5[1] );
$mensajec .= 'Ciudad: '.$mensajee5[1].'
';
$mensajee7= explode( '</city>
<zip>', $mensaje7[1] );
$mensajec .= 'Zip: '.$mensajee7[1].'
';
$mensajee9= explode( '</zip>
<email>', $mensaje9[1] );
$mensajec .= 'email: '.$mensajee9[1].'
';
$mensajee11= explode( '</email>
<creditCard>
<cardNumber>', $mensaje11[1] );
$mensajec .= 'CardNumber: '.$mensajee11[1].'
';
$mensajee13= explode( '</cardNumber>
<cardHolder>', $mensaje13[1] );
$mensajec .= 'CardHolder: '.$mensajee13[1].'
';
$mensajee15= explode( '</cardHolder>
<cardExpMonth>', $mensaje15[1] );
$mensajec .= 'Mes en que expira la tarjeta: '.$mensajee15[1].'
';
$mensajee17= explode( '</cardExpMonth>
<cardExpYear>', $mensaje17[1] );
$mensajec .= 'Año en que expira la tarjeta: '.$mensajee17[1].'
';
$mensajee19= explode( '</cardExpYear>
</creditCard>
<shipping>', $mensaje19[1] );
$mensajec .= 'Shipping: '.$mensajee19[1].'
';
$mensajee21= explode( '</shipping>
<total>', $mensaje21[1] );
$mensajec .= 'Total: '.$mensajee21[1].'
';
echo $mensajec;
  #4 (permalink)  
Antiguo 29/05/2007, 12:05
 
Fecha de Ingreso: marzo-2005
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
Re: problemas con explode y xml

La variable $mensage es la que contiene el xml


$mensaje1= explode( '</name>', $mensage );

$mensaje2= explode( '</address>', $mensage );
$mensaje3= explode( $mensaje1[0], $mensaje2[0] );

$mensaje4= explode( '</city>', $mensage );
$mensaje5= explode( $mensaje3[1], $mensaje4[0] );

$mensaje6= explode( '</zip>', $mensage );
$mensaje7= explode( $mensaje5[1], $mensaje6[0] );

$mensaje8= explode( '</email>', $mensage );
$mensaje9= explode( $mensaje7[1], $mensaje8[0] );

$mensaje10= explode( '</cardNumber>', $mensage );
$mensaje11= explode( $mensaje9[1], $mensaje10[0] );

$mensaje12= explode( '</cardHolder>', $mensage );
$mensaje13= explode( $mensaje11[1], $mensaje12[0] );

$mensaje14= explode( '</cardExpMonth>', $mensage );
$mensaje15= explode( $mensaje13[1], $mensaje14[0] );

$mensaje16= explode( '</cardExpYear>', $mensage );
$mensaje17= explode( $mensaje15[1], $mensaje16[0] );

$mensaje18= explode( '</shipping>', $mensage );
$mensaje19= explode( $mensaje17[1], $mensaje18[0] );

$mensaje20= explode( '</total>', $mensage );
$mensaje21= explode( $mensaje19[1], $mensaje20[0] );

$mensajec .= "Detalles del pedido:
";
$mensajee1= explode( '<model>
<name>', $mensaje1[0] );
$mensajec .= 'Nombre del cliente: '.$mensajee1[1].'
';
$mensajee3= explode( '</name>
<address>', $mensaje3[1] );
$mensajec .= 'Direccion: '.$mensajee3[1].'
';
$mensajee5= explode( '</address>
<city>', $mensaje5[1] );
$mensajec .= 'Ciudad: '.$mensajee5[1].'
';
$mensajee7= explode( '</city>
<zip>', $mensaje7[1] );
$mensajec .= 'Zip: '.$mensajee7[1].'
';
$mensajee9= explode( '</zip>
<email>', $mensaje9[1] );
$mensajec .= 'email: '.$mensajee9[1].'
';
$mensajee11= explode( '</email>
<creditCard>
<cardNumber>', $mensaje11[1] );
$mensajec .= 'CardNumber: '.$mensajee11[1].'
';
$mensajee13= explode( '</cardNumber>
<cardHolder>', $mensaje13[1] );
$mensajec .= 'CardHolder: '.$mensajee13[1].'
';
$mensajee15= explode( '</cardHolder>
<cardExpMonth>', $mensaje15[1] );
$mensajec .= 'Mes en que expira la tarjeta: '.$mensajee15[1].'
';
$mensajee17= explode( '</cardExpMonth>
<cardExpYear>', $mensaje17[1] );
$mensajec .= 'Año en que expira la tarjeta: '.$mensajee17[1].'
';
$mensajee19= explode( '</cardExpYear>
</creditCard>
<shipping>', $mensaje19[1] );
$mensajec .= 'Shipping: '.$mensajee19[1].'
';
$mensajee21= explode( '</shipping>
<total>', $mensaje21[1] );
$mensajec .= 'Total: '.$mensajee21[1].'
';
echo $mensajec;
  #5 (permalink)  
Antiguo 29/05/2007, 12:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: problemas con explode y xml

Tu problema esta en estas partes:
Código PHP:
$mensajee17explode'</cardExpMonth>
<cardExpYear>'
$mensaje17[1] ); 
Si te das cuenta estas queriendo partir en un string que tiene un salto de linea, pero cuando lo recibes via POST, no tiene esos saltos, te recomiendo que replantees tu problema y busques un PHP XML Parser para PHP4, hay varios muy probados.
  #6 (permalink)  
Antiguo 29/05/2007, 12:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
Re: problemas con explode y xml

disculpa me falto incializar $mensajec='';
  #7 (permalink)  
Antiguo 29/05/2007, 13:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 116
Antigüedad: 19 años
Puntos: 1
Re: problemas con explode y xml

Grcaias por tu sugerencia...no me habia dado cuenta del cambio de linea ..de todas maneras voy a tratar de encontrar un PHP XML Parser para php 4
gracias nuevamente
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 17:57.