Я пытаюсь загрузить XML-файл, используя XStream API с Clojure. Этот процесс не работает, и я не знаю, что происходит.
У меня есть тип, определенный в пространстве имен:
(ns myapp.domain.foo)
(defrecord Foo [value price])
И у меня есть функция, которая импортирует данные из XML-файла, используя XStream.
(ns myapp.xml.xml-reader
(:import myapp.domain.foo.Foo)
(:import com.thoughtworks.xstream.XStream)
(:import com.thoughtworks.xstream.io.xml.DomDriver))
(defn load-from-xml
[xml]
(let [parser (XStream. (DomDriver.))]
(.alias parser "Foo" Foo)
(.fromXML parser reader)))
Когда я пытаюсь использовать эту функцию для загрузки XML-данных в Foo, возникает следующая ошибка:
com.thoughtworks.xstream.mapper.CannotResolveClassException:myapp.domain.foo.Foo : myapp.domain.foo.Foo
Это мой тестовый код:
(deftest leitor-xml-test
(let[ xml "<Foo><value>43.5</value><price>1000</price></Foo>"]
(testing "should be possible to load xml"
(let [ foo-list (load-from-xml xml)]
(is (= (count foo-list) 1)))))
Я не понимаю, почему это происходит.
Я думаю, что проблема может быть в пространствах имен, потому что, когда я использую это в repl, все в порядке.
Может кто-нибудь помочь?