2012-06-28 3 views
4

Я использую Clojure 1.3.0, и clojure.xml, однако, пытаясь разобрать XML производит:clojure.xml не удалось найти метод на SAXParser

IllegalArgumentException Никакой метод сопоставления не найдено: разбор класса com.sun. org.apache.xerces.internal.jaxp.SAXParserImpl clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:79)

(это Java 1.6) - несоответствие версий между саксофоном анализаторами и Clojure 1.3?

EDIT: Я также пробовал Clojure 1.4, ту же проблему. Должна быть проблема JDK?

+1

Можете ли вы опубликовать код, создающий это исключение? –

+0

Я думаю, что неправильно читаю: http://clojure.github.com/clojure/clojure.xml-api.html - он может читать только файлы/uris, а не строки/потоки? –

ответ

4

Это было мое непонимание clojure.xml - когда вы передаете ему строку, он ищет URI, где загружать содержимое XML. Если у вас уже есть XML как строка, конвертируйте его в поток и передайте его в clojure.xml, что-то вроде:

(let [stream (java.io.ByteArrayInputStream. (.getBytes (.trim xml)))] 
Смежные вопросы