2011-03-01 23 views

Respuesta

16

Aquí hay un par de maneras de hacerlo en 2.8.1:

cat > root.xml << EOF 
<ROOT> 
<id>123</id> 
</ROOT> 
EOF 
zip root root.xml 

y luego en el REPL:

val rootzip = new java.util.zip.ZipFile("root.zip") 
import collection.JavaConverters._ 
val entries = rootzip.entries.asScala 
entries foreach { e => 
    val x = scala.xml.XML.load(rootzip.getInputStream(e)) 
    println(x) 
} 

o algo así:

val rootzip = new java.util.zip.ZipFile("root.zip") 
import scala.collection.JavaConversions._ 
rootzip.entries. 
    filter (_.getName.endsWith(".xml")). 
    foreach { e => println(scala.xml.XML.load(rootzip.getInputStream(e))) } 
+0

Muchas gracias. Este realmente ayudó más. Pegué un código de método implícito para convertir la enumeración de Java en una lista de Scala. collection.JavaConverters._ y asScala() ayudaron a reducir la complejidad del código. Una gran cantidad de ejemplos útiles para la lectura de archivos XML y ZIP en scala. Gracias una tonelada. –

5
+0

Qué _does_ tiene soporte gzip (aunque no tar.gz), como pide la etiqueta OP. –

+1

No veo 'alquitrán' aquí, solo 'gzip'. :) Un GZIPInputStream debe ser exactamente lo que ordenó el médico. O, si se trata de un archivo PKZIP, funcionará algo más en el mismo paquete (con una ayuda adicional de complejidad accidental) –

+0

hmmmm ... ¿algún código de muestra rápido para ver? No soy un poco vago, eso es todo. –

4

yo personalmente prefiero TrueZip. Le permite tratar archivos de archivo como un sistema de archivos virtual, proporcionando la misma interfaz que la E/S de archivos Java estándar.

Cuestiones relacionadas