如何直接从Scala程序中的压缩文件访问XML数据文件?有没有直接的方法以编程方式解压缩和读取我的Scala代码中的内容?
答案 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)
您可以使用Java包java.util.zip:http://download.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html
答案 2 :(得分:4)
我个人更喜欢TrueZip。它允许您将归档文件视为虚拟文件系统,提供与标准Java文件I / O相同的接口。