Foros del Web » Programando para Internet » PHP »

Lectura de XML con varios resultados

Estas en el tema de Lectura de XML con varios resultados en el foro de PHP en Foros del Web. Veamos haber si me pueden ayudar por que ya esto me supera me tiene machacado el cerebro :( yo recojo una peticion en XML de ...
  #1 (permalink)  
Antiguo 11/03/2009, 13:20
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Lectura de XML con varios resultados

Veamos haber si me pueden ayudar por que ya esto me supera me tiene machacado el cerebro :(

yo recojo una peticion en XML de esta forma y la leo con XML para asignarla a variables php y luego insertar en la base de datos

Código PHP:
$respuesta_SERVER ='<DeliveryReport><message id="1023012301" sentdate="hsdaghjsda"
donedate="2005/7/19 22:0:0" status="NOT_SENT" /></DeliveryReport>'
;


    

     
$objeto simplexml_load_string($respuesta_SERVER);
     echo 
$id $objeto->message->attributes()->id."<br>";
    echo 
$sentdate $objeto->message->attributes()->sentdate."<br>";
    echo 
$donedate $objeto->message->attributes()->donedate."<br>";
    echo 
$status $objeto->message->attributes()->status."<br>"
Pero como hago si $respuesta_SERVER trae mas de una respuesta es decir.

Código PHP:
<DeliveryReport><message id="1023012301" sentdate="hsdaghjsda"
donedate="2005/7/19 22:0:0" status="NOT_SENT" /></DeliveryReport><DeliveryReport><message id="1023012301" sentdate="hsdaghjsda"
donedate="2005/7/19 22:0:0" status="NOT_SENT" /></DeliveryReport><DeliveryReport><message id="1023012301" sentdate="hsdaghjsda"
donedate="2005/7/19 22:0:0" status="NOT_SENT" /></DeliveryReport
por favor ayudenme por que me esta superando esto necesito hacer un while con los resultados separados por respuesta para ir haciendo un insert a la base de datos por separado.

entienden, gracias!
__________________
Si la vida te da la espalda tocale el culo
  #2 (permalink)  
Antiguo 12/03/2009, 04:20
 
Fecha de Ingreso: noviembre-2008
Mensajes: 44
Antigüedad: 15 años, 5 meses
Puntos: 2
Busqueda Respuesta: Lectura de XML con varios resultados

Hola!

Te comento mis sugerencias.

En primer lugar, creo que un xml tiene que tener una etiqueta padre/raiz que sea única. También deberia tener una cabecera del tipo

<?xml version="1.0" encoding="ISO-8859-1"?> // donde indicas el estandar xml que utilizas y la codificicación // Creo que php sólo trabaja con codificación utff-8, para trabar con otras codificaciones tendrias que buscar cómo solucionarlo, utilizando funciones de conversion de codificación de php

<raiz>

<hijo>
<nieto>
</nieto>

<nieto>
</nieto>
</hijo>

<hijo>
<nieto>
</nieto>

<nieto>
</nieto>
</hijo>

<hijo>
<nieto>
</nieto>

<nieto>
</nieto>
</hijo>
....
</raiz>

Al fin y al cabo un xml es como un árbol constituido por subarboles.

en tu caso, cada hijo seria cada DeliveryReport. Para recorrer todos los hijos podrias utilizar la función SimpleXMLElement::children que te busca los hijos de un nodo.

la explicación del funcionamiento de esta funcion lo tienes en la url
enlace -> es2.php.net/manual/en/function.simplexml-element-children.php

En conclusión:
deberias cambiar el xml que recibes bien a la hora de construirlo o antes de tratarlo y añadirle una cabecera y un nodo padre. Después deberia recorrerlo utilizando la función children o cualquier otra que te sirva de la libreria SimpleXml (enlace -> es2.php.net/simplexml)

Última edición por El_Barba; 12/03/2009 a las 04:54
  #3 (permalink)  
Antiguo 24/03/2009, 01:32
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Lectura de XML con varios resultados

ya pero me lo devuelve asi el proveedor.
__________________
Si la vida te da la espalda tocale el culo
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 00:34.