Foros del Web » Programando para Internet » PHP »

leer un archivo xml que esta dentro de un archivo zip

Estas en el tema de leer un archivo xml que esta dentro de un archivo zip en el foro de PHP en Foros del Web. hola a todos en el foro. tengo un pequeño problema al leer un archivo zip en php. resulta que tengo que desplegar unos datos de ...
  #1 (permalink)  
Antiguo 04/01/2012, 07:05
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Pregunta leer un archivo xml que esta dentro de un archivo zip

hola a todos en el foro. tengo un pequeño problema al leer un archivo zip en php.

resulta que tengo que desplegar unos datos de un archivo xml que esta dentro de un archivo zip.
la lectura del zip lo hago con la clase Zip que provee php, y la lectura del archivo xml lo hago con la clase simple_xml. ya he tratado de descomprimir el archivo y leerlo, todo hasta ahi sin problemas, pero no quiero que se me llene el servidor con todos los archivos que descomprima. lo que quiero hacer es que la pagina abra en memoria el archivo zip y lea el archivo xml. mi problema es que no logro hacer esa conexion.
agradeceria mucho que me pudiesen ayudar.

muchas gracias de antemano.

saludos.
  #2 (permalink)  
Antiguo 04/01/2012, 07:47
 
Fecha de Ingreso: julio-2010
Mensajes: 393
Antigüedad: 14 años, 3 meses
Puntos: 67
Respuesta: leer un archivo xml que esta dentro de un archivo zip

Mira esto...
http://stackoverflow.com/questions/7...ct-zip-archive

Espero te sirva.
Saludos!
__________________
Páginas web de alta calidad y hechas a la medida.
  #3 (permalink)  
Antiguo 04/01/2012, 07:57
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: leer un archivo xml que esta dentro de un archivo zip

muchas gracias el_quick. voy a intentarlo y te cuento como me fue.
  #4 (permalink)  
Antiguo 04/01/2012, 09:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: leer un archivo xml que esta dentro de un archivo zip

No hace falta que descomprimas nada. podés hacer esto
Código PHP:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>Leer XML desde dentro de un zip sin descomprimirlo</title>
  6. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  7. </head>
  8. <body>
  9. <div>
  10. <?php
  11. $zip = zip_open("feed2.zip");
  12. if($zip){
  13. while ($zip_entry = zip_read($zip)){
  14.  
  15. echo "<p>Nombre del archivo: " . zip_entry_name($zip_entry) . "<br />\n";
  16.  
  17. if(zip_entry_open($zip, $zip_entry)){
  18. echo "Contenido del archivo</p>\n";
  19. $contenido = zip_entry_read($zip_entry);
  20. echo "<pre>" . htmlentities($contenido) . "</pre>";
  21. echo "<p>Leerlo con  simplexml_load_string()</p>\n";
  22. $string = <<< XML
  23. $contenido
  24. XML;
  25. $xml = simplexml_load_string($string);
  26.  
  27. $salida ="";
  28. foreach($xml->nota as $item){
  29. $autor= $item->autor;
  30. $contenido= $item->contenido;
  31. $fecha= $item->fecha;
  32. $titulo= $item->titulo;
  33. $salida .= "Autor: " . $autor . "<br /><b>$titulo</b> [$fecha]<br />" . strip_tags($contenido) . "<hr />\n";
  34. }
  35. echo $salida;
  36.      
  37. zip_entry_close($zip_entry);
  38. }
  39. }
  40. // cerrar el zip
  41. zip_close($zip);
  42. }
  43. ?>
  44. </div>
  45. </body>
  46. </html>

Este es xml que tendrias que zipear para hacer la demo
feed2.xml

Código XML:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <notas>
  3. <nota>
  4.     <autor>luis rodriguez</autor>
  5.     <fecha>05/12/2011 12:21:59</fecha>
  6.     <titulo>ejemplo de xml parser</titulo>
  7.     <contenido><![CDATA[ este es el contenido de rodriguez ]]></contenido>
  8. </nota>
  9. <nota>
  10.     <autor>victor martinez</autor>
  11.     <fecha>05/12/2011 12:21:59</fecha>
  12.     <titulo>ejemplo de xml parser</titulo>
  13.     <contenido><![CDATA[ este es el contenido de martinez ]]></contenido>
  14. </nota>
  15. </notas>

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 05/01/2012, 08:13
 
Fecha de Ingreso: noviembre-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: leer un archivo xml que esta dentro de un archivo zip

muchas gracias por tu respuesta emprear. me ha servido mucho. pero tengo otra duda. segun ese codigo tienes que cargar todo el xml dentro de un string, pero lo que yo quiero hacer es leer directamente el xml, con el metodo simplexml_load_file, debido a que a veces se presentan caracteres extraños dentro del xml.... como podria hacer esa variacion??

muchas gracias. saludos
  #6 (permalink)  
Antiguo 05/01/2012, 08:55
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: leer un archivo xml que esta dentro de un archivo zip

Para cargar un archivo podés usar
$xml = simplexml_load_file("archivo.xml");
Pero previamente tendrías que descomprimirlo, si no querés que te quede basura, después de manejarlo le haces un unlink();

De todas maneras, si tu xml tiene un "contenido extraño" como vos lo denominas, load_file o load string no te va a cambiar ese contenido extraño.
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: simple_xml, xml, zip, ziparchive
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 03:20.