2013-01-15 34 views
11

我有一個大表有效XHTML文件(100兆字節的數據)。首先tr是列(用於數據庫),其他所有tr都是數據。它是整個文檔中的唯一表格,它在結構體html-> body-> div-> table中。我該如何在Clojure中懶散地解析大型XHTML文件?

我如何解析它在Clojure的偷懶的辦法?

我知道data.xml而是因爲我初學CLJ是很困難的,我讓它工作。尤其是因爲REPL在處理這麼大的文件時速度很慢。

+0

參見http://stackoverflow.com/questions/9939844/huge-xml-in-clojure – Korny

回答

15

data.xml文檔說,它創建一個文檔的懶漢樹: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 
+2

+1對於http://www.xml-benchmark .ORG/downloads.html。很好的發現。 – webnoob

+0

一個使用XML /解析的結果的慣用方式是使用ZIP/XML的拉鍊與data.zip定義的特定XML-ZIP過濾器一起 - 谷歌「Clojure的XML壓縮」一些過時的教程。 – Alex