Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala代码中读取压缩的xml文件?_Scala_Gzip_Scala 2.8 - Fatal编程技术网

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

如何在Scala代码中读取压缩的xml文件?,scala,gzip,scala-2.8,Scala,Gzip,Scala 2.8,如何直接从Scala程序中的压缩文件访问XML数据文件?有没有直接的方法可以通过编程方式解压和读取Scala代码中的内容?您可以使用Java包Java.util.zip:我个人更喜欢。它允许您将归档文件视为一个虚拟文件系统,提供与标准Java文件I/O相同的接口。在2.8.1中有几种方法: cat > root.xml << EOF <ROOT> <id>123</id> </ROOT> EOF zip root root.xml

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

您可以使用Java包Java.util.zip:

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

在2.8.1中有几种方法:

cat > root.xml << EOF
<ROOT>
<id>123</id>
</ROOT>
EOF
zip root root.xml
或者类似于:

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

作为OP的标记请求,它确实支持gzip(虽然不是tar.gz)。我在这里没有看到“tar”,只有“gzip”。:)GZIPInputStream应该是医生要的。或者,如果它实际上是一个PKZIP文件,那么同一个包中的其他东西可以工作(附带意外复杂性的额外帮助)hmmmm…有没有快速的示例代码可以查看?我只是有点懒,就是这样。非常感谢。这一次真的帮助最大。我粘贴了一个隐式方法代码,用于将Java枚举转换为Scala列表。JavaConverters.u和asScala()有助于降低代码复杂性。在scala中有很多非常有用的XML和ZIP文件读取示例。非常感谢。
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))) }