2013-07-09 2 views
2

Я следую за this article для синтаксического анализа XML. Он имеет пример кода, который не работает для меня, когда я играть в РЕПЛ:Невозможно использовать пространство имен clojure.data.zip.xml в Clojure

(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

Смежные вопросы