Все еще получаю ArrayIndexOutOfBoundsException при попытке испустить xml в clojure - PullRequest
1 голос
/ 20 февраля 2012

Полная трассировка стека

(ns test.xml.emit
  (:use clojure.core)
  (:require [clojure.xml :as xml]))

(defn testemit []
  (xml/emit {:tag :web-app
             :attrs {:xmlns:xsi "http://www.w3.org/2001/XMLSchema-instance"
                     :xmlns "http://java.sun.com/xml/ns/javaee"
                     :xmlns:web "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                     :xsi:schemaLocation "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                     :id "Foo"
                     :version "1.0"},
             :content [{:tag :display-name "FooBar+"}
                       {:tag :listener
                        :attrs {:listener-class "com.example.server.Main"}}
                       {:tag :filter
                        :attrs {:filter-name "guiceFilter"
                                :filter-class "com.google.inject.servlet.GuiceFilter"}}
                       {:tag :filter-mappings
                        :attrs {:filter-name "guiceFilter"
                                {:url-pattern "/*"}}}]}))

В нашем последнем эпизоде ​​, Джастин Крамер был достаточно любезен, чтобы объяснить мне, как замыкание.xml / emit ожидает, что входные данные будут отформатированы, чтобы можно было использовать xml.Я все еще получаю то же исключение, но после того, как я просмотрел функцию.Интересно, могут ли атрибуты xmlns: xsi, xmlns: web и xsi: schemaLocation в теге web-app вызывать исключение из-за лишнего двоеточия, но я не знаю достаточно, чтобы сказать наверняка.Может кто-нибудь показать мне, где я иду не так?Спасибо за ваше время и внимание, и хорошего дня.

1 Ответ

3 голосов
/ 20 февраля 2012

Ваша ошибка связана с вашим синтаксисом - в вашем коде есть несколько карт с нечетным числом форм, карты должны иметь четное число (каждый ключ должен иметь значение).Например, одна из ваших карт:

{:tag :display-name "FooBar+"}

имеет 3 записи, что вызывает ошибку, которую вы видите.Также обратите внимание: Что случилось с closure.xml / emit?

HTH,

Кайл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...