Вызов clojure.xml/parse
с String
параметра (URI) похож на этот Java код:
SAXParserFactory.newInstance().newSAXParser().parse("<your_uri>", <instance of XMLHandler provided by Clojure>);
Clojure не выполняет запрос HTTP GET. Он просто использует анализатор SAX в качестве парсера по умолчанию. Парсер Sax внутренне создает экземпляр XMLInputSource
и передает его полностью до XMLEntityManager
. Класс XMLEntityManager
делает всю работу, связанную с открытием соединения и получить ваш XML (или больше как HTML) документ:
URL location = new URL(expandedSystemId);
URLConnection connect = location.openConnection();
... skip ...
stream = connect.getInputStream();
Если XmlInputSource
является экземпляром HTTPInputSource
, то XMLEntityManager
устанавливает свойство запроса HTTP. Однако аналогичная функциональность для XMLInputSource
(это то, что у нас есть в случае SAXParser).
Я думаю, что вы можете помочь вам сменить парсер SAX на некоторые другие реализации.
Это звучит как отчет об ошибке, поэтому я думаю, что вы должны направить этот вопрос группе Google Clojure. Также обратите внимание, что 'clojure.xml' имеет другие недостатки, чье исправление, вероятно, не будет приоритизировано в это время; таким образом, 'clojure.contrib.lazy-xml', вероятно, лучший выбор. (Не уверен, что он свободен от конкретной проблемы, которую вы описываете, поэтому не отправляйте это как ответ.) –
Хорошо, я разместил его в группе Google. – StackedCrooked