problema con xml y php
Publicado por Sergiomariano Castellanos (2 intervenciones) el 30/07/2012 19:36:49
Buen dia. tengo un serio rpoblema que quiza sea de sintaxis mas que programacion pero pues ya no se que hacer si alguine me ayuda lo agradecere!.
El problema es este a travez de un curl obtengo un xml de un webserver y lo puedo desplegar asignandole a dicho xml una variable. el problema es como descompongo el xml para solo tomar los campos que necesito y luego desplegarlos a travez de mi web service, ya que necesito solo algunos datos de el xml q recibo y necesito enviarlos a otro programa pero son toda la trama de xml. este es el codigo.
como hago para tomar un valor especifico del xml que es igual a $result???? este es mi problema
ya probe asi y nada!!
el xml q recibo viene asi
y lo que necesito obtener es el primer nombre y ambos apellidos! nada mas de esta manera
$nombre= firstname
$apellido1= primer apellido
$apellido2 = segundo apellido
para luego enviarlos a otro web service.
alguien puede ayudarme gracias!!!!
El problema es este a travez de un curl obtengo un xml de un webserver y lo puedo desplegar asignandole a dicho xml una variable. el problema es como descompongo el xml para solo tomar los campos que necesito y luego desplegarlos a travez de mi web service, ya que necesito solo algunos datos de el xml q recibo y necesito enviarlos a otro programa pero son toda la trama de xml. este es el codigo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$xml=yo envio trama
$url = "https://webserver";
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, utf8_encode($xml));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSLCERT, 'archivopem.pem');
curl_setopt($ch, CURLOPT_SSLKEY, 'archivokey.key');
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_HEADER, true );
curl_setopt($ch, CURLOPT_VERBOSE, 3);
$result = curl_exec($ch) ;
curl_close($ch);
echo $result; // se imprime todo el xml que obtengo del webserver perfectamente sin ningun error.
como hago para tomar un valor especifico del xml que es igual a $result???? este es mi problema
ya probe asi y nada!!
1
2
3
4
5
$xmlin = simplexml_load_string($result);
foreach ($xmlin->channel->item as $item)
{
echo $item;
}
el xml q recibo viene asi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="UTF-8"?>
<NS1:datos de la transaccion xmlns:NS1="http://webserver">
<instant_notification>
<addl_service_charges/>
</instant_notification>
<payment_transactions>
<payment_transaction>
<sender>
<name name_type="M">
<given_name>firstname</given_name>
<paternal_name>primer apellido</paternal_name>
<maternal_name>segundo apellido</maternal_name>
</name>
<address>
<city>Ciduad</city>
<state>stado</state>
<country_code>
<iso_code>
<country_code>pais</country_code>
</iso_code>
</country_code>
<state_zip>zip</state_zip>
<street>direccion principal</street>
<local_delivery_area>#######</local_delivery_area>
</address>
<contact_phone>telefono</contact_phone>
<mobile_phone>
<phone_number/></mobile_phone>
<mobile_details>
<number>####</number>
</mobile_details>
</sender>
</payment_transactions>
</NS1:receive-money-search-reply>
y lo que necesito obtener es el primer nombre y ambos apellidos! nada mas de esta manera
$nombre= firstname
$apellido1= primer apellido
$apellido2 = segundo apellido
para luego enviarlos a otro web service.
alguien puede ayudarme gracias!!!!
Valora esta pregunta


0