如何读取Scala代码中的压缩xml文件?
这里有一对夫妇的做这件事的方式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))) }
您可以使用Java包java.util.zip:http://download.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html
哪个_does_根据OP的标签要求,提供gzip(尽管不是tar.gz)支持。 – 2011-03-01 13:22:44
我在这里看不到'tar',只是'gzip'。 :)一个GZIPInputStream应该只是医生的命令。或者,如果它实际上是一个PKZIP文件,那么同一个包中的其他内容将会起作用(带来额外的意外复杂性) – 2011-03-01 18:18:24
hmmmm ...要查看的任何快速示例代码?我只是有点懒,那就是它。 – 2011-03-01 18:26:39
非常感谢。这一个真的帮助最大。我粘贴了一个隐式方法代码,用于将Java Enumeration转换为Scala列表。 collection.JavaConverters._和asScala()帮助减少了代码的复杂性。在scala中读取XML和ZIP文件的许多真正有用的示例。万分感谢。 – 2011-03-10 11:40:42