Что случилось с closure.xml / emit? - PullRequest
4 голосов
/ 14 декабря 2010

Многие блоги ссылаются на функцию clojure.xml / emit (или clojure.contrib.lazy-xml / emit), но, похоже, она отсутствует в документации 1.2.

Была ли она устаревшей?Что заменило его?

Можно ли использовать его для записи XML в кодировке Clojure (например: {:tag :address :content {:tag :street ...} })?

ОБНОВЛЕНИЕ : я посмотрел исходный код дляclojure.contrib.lazy-xml/emit (Крис Хаузер), и, хотя он также не является "официальным", он выглядит как более стабильное решение, чем clojure.xml/emit.

Кстати, я "открыл" clojure и clojure-contribисходный код как отличные примеры хорошо написанного идиоматического Clojure (особенно части, написанные мастерами, Ричем Хики, двумя Стюартами, Крисом Хаузером и т. д.) Мне нужно потратить некоторое время на изучение этого кода.

Ответы [ 2 ]

5 голосов
/ 14 декабря 2010

Как ни странно, clojure.xml/emit все еще существует, когда вы (use 'clojure.xml) это пространство имен в REPL в 1.2.0.

Для проверки:

user=> (use 'clojure.xml)
user=> (emit (parse "http://feeds.feedburner.com/burningonesblog"))

Для полного раскрытия я обнаружил этоиспользуя полезную (ns-map 'user) функцию

user=> (doc ns-map)
-------------------------
clojure.core/ns-map
([ns])
  Returns a map of all the mappings for the namespace.
nil

Теперь обратите внимание, что вы совершенно правы относительно их исчезновения из документации в 1.2 ( clojure.xml и clojure.contrib.lazy-xml ) для всех, кроме prxml , что не совсем то, что вы ищете.Я не могу сказать, почему это так, но причина, по которой они больше не отображаются в веб-интерфейсе, становится очевидной при рассмотрении их строки документации.

user=> (doc emit)
-------------------------
clojure.xml/emit
([x])
  nil
nil

Теперь этот поток находится на Google Group , которая указывает на то, что использование функции emit не рекомендуется по 2 причинам.

  1. Она не имеет документов и может быть изменена без предварительного уведомления.
  2. Это, вВообще, не создает действительный xml (хотя я полагаю, что если вы знаете, что ваши данные действительны, они будут выдавать действительный xml).

В конце этой темы Стюарт Хэллоуэй говорит о проекте по расширению ClojureПоддержка XML.

Конечно, всегда есть погружение в пул Java и использование любого из превосходных инструментов XML на стороне Java.Похоже, XML-история clojure в основном рассказывается при разборе.

Надеюсь, это поможет.

0 голосов
/ 21 февраля 2012

Если вы используете Clojure 1.2, существует clojure.contrib.prxml.

Если вы используете Clojure 1.3, замена должна составлять https://github.com/clojure/data.xml

Однако согласно "Куда ушел документ clojure.contrib на dev.clojure.org, у новой библиотеки еще нет репозитория, он может быть где-то встроен в репозиторий maven, но я не смог его найти.Впрочем, довольно легко упаковать себя.

У меня был какой-то устаревший код, который использовал prxml, поэтому я просто исправил prxml для работы с Clojure 1.3, он находится на clojars.org https://clojars.org/weissjeffm/clojure.prxml

У меня все работает нормально, но ваш пробег может отличаться.

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