如何从Scala代码中读取压缩的xml文件?

Kam*_*ula 9 gzip scala scala-2.8

如何直接从Scala程序中的压缩文件访问XML数据文件?有没有直接的方法以编程方式解压缩和读取我的Scala代码中的内容?

小智 17

以下是2.8.1中的几种方法:

cat > root.xml << EOF
<ROOT>
<id>123</id>
</ROOT>
EOF
zip root root.xml
Run Code Online (Sandbox Code Playgroud)

然后在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)
}
Run Code Online (Sandbox Code Playgroud)

或类似的东西:

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))) }
Run Code Online (Sandbox Code Playgroud)