Как читать из заархивированных XML-файлов в Scala-коде? - PullRequest
9 голосов
/ 01 марта 2011

Как мне получить доступ к файлам данных XML напрямую из заархивированного файла в моей программе Scala? Есть ли какие-либо прямые способы программно распаковать и прочитать содержимое моего кода Scala?

Ответы [ 3 ]

16 голосов
/ 08 марта 2011

Вот пара способов сделать это в 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))) }
5 голосов
/ 01 марта 2011

Вы можете использовать пакет Java java.util.zip: http://download.oracle.com/javase/6/docs/api/java/util/zip/package-summary.html

4 голосов
/ 02 марта 2011

Я лично предпочитаю TrueZip . Он позволяет обрабатывать архивные файлы как виртуальную файловую систему, обеспечивая тот же интерфейс, что и стандартный ввод / вывод файлов Java.

...