【问题标题】:Not able to use namespace clojure.data.zip.xml in Clojure无法在 Clojure 中使用命名空间 clojure.data.zip.xml
【发布时间】:2013-07-09 11:39:04
【问题描述】:

我正在关注this article 进行 XML 解析。它有一个示例代码,当我在 REPL 中播放时,它对我不起作用:

(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"]

有什么想法吗?

【问题讨论】:

  • 你在添加依赖之前重启了你的repl吗?因为我刚刚尝试重现您的错误并且它没有用。如果你有,我建议从项目文件夹中运行“lein clean”,然后再启动一个新的 nrepl。

标签: xml clojure namespaces


【解决方案1】:

可能存在多个问题,从项目布局到需要重新启动 nrepl。为了帮助解决这个问题,这里有一个可以测试的工作项目:

git clone git@github.com: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;bloggs@nowhere.example&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\">123456789abcdef@news.newzbin.com</segment>                                                                                      
 <segment bytes= \"4501\" number= \"2\">987654321fedbca@news.newzbin.com</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)) 

【讨论】:

  • 为了拯救别人的头发。在顶部元素内开始您的位置谓词,例如:head :meta 而不是 :nzb :head :meta
猜你喜欢
  • 2011-08-31
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-25
  • 2011-04-15
  • 2016-06-04
  • 1970-01-01
相关资源
最近更新 更多