diff --git a/doc/libraries.md b/doc/libraries.md
index 125e9232..6d7e8ec3 100644
--- a/doc/libraries.md
+++ b/doc/libraries.md
@@ -187,6 +187,36 @@ $ bb "(use 'doric.core) (println (table [:a :b :c] [{:a 1 :b 2 :c 3} {:a 4 :b 5
|---+---+---|
```
+### [clojure.data.zip](https://github.com/clojure/data.zip)
+
+Utilities for clojure.zip, among other things a more fluent way to work
+with xml.
+
+Small sample:
+``` clojure
+$ export BABASHKA_CLASSPATH=$(clojure -Spath -Sdeps '{:deps {org.clojure/data.zip {:mvn/version "1.0.0"}}}')
+
+$ cat data_zip_xml.clj
+(require '[clojure.data.xml :as xml])
+(require '[clojure.zip :as zip])
+(require '[clojure.data.zip.xml :refer [text attr attr= xml-> xml1-> text=]])
+
+(def data (str ""
+ " "
+ " "
+ ""))
+
+(let [xml (-> data java.io.StringReader. xml/parse zip/xml-zip)]
+ (prn :alice-is-a (xml1-> xml :character [(attr= :name "alice")] (attr :type)))
+ (prn :animal-is-called (xml1-> xml :character [(attr= :type "animal")] (attr :name))))
+
+$ bb data_zip_xml.clj
+:alice-is-a "person"
+:animal-is-called "march hare"
+```
+(see for exaple [this article](https://blog.korny.info/2014/03/08/xml-for-fun-and-profit.html#datazip-for-zipper-awesomeness)
+for more on clojure.data.zip).
+
## Projects
### [deps.clj](https://github.com/borkdude/deps.clj)
diff --git a/script/lib_tests/clojure_data_zip_test b/script/lib_tests/clojure_data_zip_test
new file mode 100755
index 00000000..3cbbfb6b
--- /dev/null
+++ b/script/lib_tests/clojure_data_zip_test
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+set -eo pipefail
+
+export BABASHKA_CLASSPATH="$(clojure -Sdeps '{:deps {org.clojure/data.zip {:mvn/version "1.0.0"}}}' -Spath)"
+
+if [ "$BABASHKA_TEST_ENV" = "native" ]; then
+ BB_CMD="./bb"
+else
+ BB_CMD="lein bb"
+fi
+
+$BB_CMD --verbose "
+(require '[clojure.data.xml :as xml])
+(require '[clojure.zip :as zip])
+(require '[clojure.data.zip.xml :refer [text attr attr= xml-> xml1-> text=]])
+
+(def data (str \"\"
+ \" \"
+ \" \"
+ \"\"))
+
+;(prn :data data)
+(let [xml (zip/xml-zip (xml/parse (java.io.StringReader. data)))]
+ ;(prn :xml xml)
+ (prn :alice-is-a (xml1-> xml :character [(attr= :name \"alice\")] (attr :type)))
+ (prn :animal-is-called (xml1-> xml :character [(attr= :type \"animal\")] (attr :name))))
+"
diff --git a/src/babashka/impl/clojure/zip.clj b/src/babashka/impl/clojure/zip.clj
new file mode 100644
index 00000000..8a101d26
--- /dev/null
+++ b/src/babashka/impl/clojure/zip.clj
@@ -0,0 +1,37 @@
+(ns babashka.impl.clojure.zip
+ {:no-doc true}
+ (:require [clojure.zip :as zip]
+ [sci.impl.namespaces :refer [copy-var]]
+ [sci.impl.vars :as vars]))
+
+(def zip-ns (vars/->SciNamespace 'clojure.zip nil))
+
+(def zip-namespace
+ {'zipper (copy-var zip/zipper zip-ns)
+ 'seq-zip (copy-var zip/seq-zip zip-ns)
+ 'vector-zip (copy-var zip/vector-zip zip-ns)
+ 'xml-zip (copy-var zip/xml-zip zip-ns)
+ 'node (copy-var zip/node zip-ns)
+ 'branch? (copy-var zip/branch? zip-ns)
+ 'children (copy-var zip/children zip-ns)
+ 'make-node (copy-var zip/make-node zip-ns)
+ 'path (copy-var zip/path zip-ns)
+ 'lefts (copy-var zip/lefts zip-ns)
+ 'rights (copy-var zip/rights zip-ns)
+ 'down (copy-var zip/down zip-ns)
+ 'up (copy-var zip/up zip-ns)
+ 'root (copy-var zip/root zip-ns)
+ 'right (copy-var zip/right zip-ns)
+ 'rightmost (copy-var zip/rightmost zip-ns)
+ 'left (copy-var zip/left zip-ns)
+ 'leftmost (copy-var zip/leftmost zip-ns)
+ 'insert-left (copy-var zip/insert-left zip-ns)
+ 'insert-right (copy-var zip/insert-right zip-ns)
+ 'replace (copy-var zip/replace zip-ns)
+ 'edit (copy-var zip/edit zip-ns)
+ 'insert-child (copy-var zip/insert-child zip-ns)
+ 'append-child (copy-var zip/append-child zip-ns)
+ 'next (copy-var zip/next zip-ns)
+ 'prev (copy-var zip/prev zip-ns)
+ 'end? (copy-var zip/end? zip-ns)
+ 'remove (copy-var zip/remove zip-ns)})
diff --git a/src/babashka/main.clj b/src/babashka/main.clj
index c5c3572e..d07d863c 100644
--- a/src/babashka/main.clj
+++ b/src/babashka/main.clj
@@ -11,6 +11,7 @@
[babashka.impl.clojure.main :as clojure-main :refer [demunge]]
[babashka.impl.clojure.pprint :refer [pprint-namespace]]
[babashka.impl.clojure.stacktrace :refer [stacktrace-namespace]]
+ [babashka.impl.clojure.zip :refer [zip-namespace]]
[babashka.impl.common :as common]
[babashka.impl.curl :refer [curl-namespace]]
[babashka.impl.features :as features]
@@ -350,6 +351,7 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that
'clojure.java.io io-namespace
'cheshire.core cheshire-core-namespace
'clojure.stacktrace stacktrace-namespace
+ 'clojure.zip zip-namespace
'clojure.main {'demunge demunge
'repl-requires clojure-main/repl-requires}
'clojure.test t/clojure-test-namespace