2013-01-15 7 views
11

私は1つの大きなテーブルで有効なXHTMLファイル(100メガバイトのデータ)を持っています。最初のtrは(データベースの)列であり、他のすべてのtrはデータです。これは文書全体の唯一のテーブルであり、構造体html-> body-> div-> table内にあります。Clojureで大きなXHTMLファイルを遅延解析する方法はありますか?

私はそれをClojureで怠惰な方法でどのように解析できますか?

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

+0

は、httpためhttp://stackoverflow.com/questions/9939844/huge-xml-in-clojure – Korny

答えて

15

data.xml docsはドキュメントの遅延木を作成すると言う:parse。私はローカルにチェックし、本当のようだ://www.xml-benchmark:

; 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 
+2

1も参照してください。 .org/downloads.html。ニースを見つける。 – webnoob

+0

xml/parseの結果を使用する慣習的な方法の1つは、zip/xml-zipの使用とdata.zipで定義されたXML固有のzipフィルタ(Googleの "Clojure xml zip")です。 – Alex

関連する問題