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

时间:2011-03-01 10:59:51

标签: scala gzip scala-2.8

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

3 个答案:

答案 0 :(得分:16)

以下是2.8.1中的几种方法:

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

然后在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)
}

或类似的东西:

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))) }

答案 1 :(得分:5)

答案 2 :(得分:4)

我个人更喜欢TrueZip。它允许您将归档文件视为虚拟文件系统,提供与标准Java文件I / O相同的接口。