11

1 つの大きなテーブルを含む有効な XHTML ファイル (100 メガバイトのデータ) があります。最初の tr は列 (データベース用) で、他のすべての tr はデータです。ドキュメント全体で唯一のテーブルであり、html->body->div->table という構造になっています。

Clojureで怠惰な方法で解析するにはどうすればよいですか?

私はdata.xmlについて知っていますが、私は Clj の初心者であるため、それを機能させるのは非常に困難です。特に、このような大きなファイルを操作している間、REPL は非常に遅いためです。

4

1 に答える 1

15

data.xmldocs は、ドキュメントの遅延ツリーを作成すると言います: parse。ローカルで確認したところ、本当のようです:

; Load libs
(require '[clojure.data.xml :as xml])
(require '[clojure.java.io :as io])

; standard.xml is 100MB xml file from here http://www.xml-benchmark.org/downloads.html
(def xml-tree (xml/parse (io/reader "standard.xml")))
(:tag xml-tree) => :site

(def child (first (:content xml-tree)))
(:tag child) => :regions

(dorun (:content xml-tree)) => REPL hangs for ~30 seconds on my computer because it tries to parse whole file
于 2013-01-15T08:39:34.923 に答える