Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 3 (test-xml.clj: 6) - PullRequest
1 голос
/ 15 февраля 2012

Я пытаюсь написать функцию в clojure, которая печатает xml, используя clojure.xml / emit.

(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 [{:display-name "FooBar+"}
                       {:listener
                        {:listener-class "com.example.server.Main"}}
                       {:filter
                        {:filter-name "guiceFilter"}
                        {:filter-class "com.google.inject.servlet.GuiceFilter"}}
                       {:filter-mappings
                        {:filter-name "guiceFilter"}
                        {:url-pattern "/*"}}]}))

Я знаю, что означает исключение, но я не уверен, как это относится к моейкод.Может ли кто-нибудь указать мне правильное направление?
Полная трассировка стека доступна по адресу https://gist.github.com/1838248

Спасибо за ваше время и внимание

1 Ответ

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

Ошибка для этого в Clojure 1.3 немного более полезна: «Литерал карты должен содержать четное число форм».

Проблема в последних двух записях вектора :content: ониявляются буквальными картами, содержащими три формы.Карты состоят из пар ключ-значение, поэтому должны содержать четное число.

Кроме того, содержимое в :content не похоже на действительные данные для передачи в emit.Каждый узел должен иметь атрибуты :tag, :attrs и :content или быть строкой.

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