1

[org.clojure/data.xml "0.0.7"] を依存関係として持つ leiningen プロジェクトと、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)

私は何を間違っていますか?ありがとう。

4

1 に答える 1

4

docstring で説明されているように、 orclojure.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/fileファイルの取り扱いについて明示したい場合に使用できます ( (io/reader (io/file ...)))。io/resourceクラスパスで物事を調べるためのものもあります。

于 2013-08-07T02:23:49.693 に答える