2013-01-15 11 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