【问题标题】:Clojure data.xml errorClojure data.xml 错误
【发布时间】:2013-08-07 01:25:06
【问题描述】:

我有一个 leiningen 项目,其中 [org.clojure/data.xml "0.0.7"] 作为依赖项,并且在 data/data-sample.xml 中有一个 xml 文件

可行:

(require '[clojure.xml :as xml])
(xml/parse "data/small-sample.xml")

返回:

{:tag :data, :attrs nil, :content [{:tag :person, :attrs nil, :content [{:tag :given-name, :attrs nil, :content ["Gomez"]} {:tag :surname, :attrs nil, :content ["Addams"]} {:tag :relation, :attrs nil, :content ["father"]}]} {:tag :person, :attrs nil, :content [{:tag :given-name, :attrs nil, :content ["Morticia"]}...

那行不通:

(require '[clojure.data.xml :as data.xml])
(data.xml/parse "data/small-sample.xml")

返回:

IllegalArgumentException No matching method found: createXMLStreamReader for class com.sun.xml.internal.stream.XMLInputFactoryImpl  clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:80)

我做错了什么? 谢谢。

【问题讨论】:

    标签: java xml xml-parsing clojure xmlstreamreader


    【解决方案1】:

    正如其文档字符串中所述,clojure.data.xml/parse 接受 InputStreamReader,因此您需要提供:

    (require '[clojure.data.xml :as xml]
             '[clojure.java.io :as io])
    
    (xml/parse (io/reader "data/small-sample.xml"))
    

    请注意,io/reader 尝试将字符串视为 URI 作为第一次猜测,然后作为本地文件名。如果您想明确处理文件 ((io/reader (io/file ...))),可以使用 io/file。还有 io/resource 用于在类路径上查找内容。

    【讨论】:

    • 非常感谢!不知何故,我希望他们的行为方式相同。我在这里打开了一个新问题,作为对此的跟进:stackoverflow.com/questions/18094278/…
    • 我想知道,错误信息是如何解释问题的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多