2013-07-09 51 views
2

我正在關注this article以進行XML解析。它有一個示例代碼,當我在REPL發揮出它不爲我工作:無法在Clojure中使用命名空間clojure.data.zip.xml

(require '[clojure.data.zip.xml :as zip-xml]) 

它拋出我下面的錯誤:FileNotFoundException Could not locate clojure/data/zip/xml__init.class or clojure/data/zip/xml.clj on classpath

我使用leiningen的項目和有以下項目中定義的依賴項:

[org.clojure/clojure "1.5.1"] 
[org.clojure/data.zip "0.1.1"] 

有什麼問題?

+2

你有沒有加入依賴之前重新啓動您的REPL ?因爲我剛剛試圖重現你的錯誤,並沒有奏效。如果你有,我建議從項目文件夾運行一個「lein clean」,然後啓動一個新的nrepl。 –

回答

1

可能有幾個問題,從項目佈局到需要重新啓動nrepl。要使用此幫助這裏是一個工作項目,測試針對:

git clone [email protected]:thearthur/zip-xml-example.git 

project.clj:

(defproject zip-example "0.1.0-SNAPSHOT"                                 
    :description "FIXME: write description"                                 
    :url "http://example.com/FIXME"                                   
    :license {:name "Eclipse Public License"                                 
      :url "http://www.eclipse.org/legal/epl-v10.html"}                            
    :dependencies [[org.clojure/clojure "1.5.1"]                                
       [org.clojure/data.zip "0.1.1"]]) 

core.clj:

(ns zip-example.core                                      
    (:require [clojure.data.zip.xml :as zip-xml]                                
      [clojure.zip :as zip]              
      [clojure.xml :as xml]                                   
      [clojure.pprint :refer [pprint]]))                                

(def xml                                         
    "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>                              
<!-- <!DOCTYPE nzb PUBLIC \"-//newzBin//DTD NZB 1.1//EN \" \"http://www.newzbin.com/DTD/nzb/nzb-1.1.dtd \"> -->               
<nzb xmlns=\"http://www.newzbin.com/DTD/2003/nzb\">                              
<head>                                         
    <meta type=\"title \">Your File!</meta>                                 
    <meta type=\"tag \">Example</meta>                                  
</head>                                         
<file poster=\"Joe Bloggs &lt;[email protected]&gt;\" date=\"1071674882\" subject=\"Here's your file! abc-mr2a.r01 (1/2)\">           
<groups>                                         
<group>alt.binaries.newzbin</group>                                  
<group>alt.binaries.mojo</group>                                   
</groups>                                         
<segments>                                         
<segment bytes= \"102394\" number= \"1\">[email protected]</segment>                      
<segment bytes= \"4501\" number= \"2\">[email protected]</segment>                       
</segments>                                        
</file>                                         
</nzb>")                                         

(spit "test.xml" xml)                                      
(def parsed-xml (zip/xml-zip (xml/parse "test.xml")))                              
(pprint (zip-xml/xml-> parsed-xml :head :meta)) 
+1

爲了挽救其他人的頭髮。在頂部元素內開始您的位置謂詞,例如':head:meta'而不是':nzb:head:meta'。 – Joe