使用URI调用函数clojure.xml / parse时,Clojure会执行HTTP GET请求来获取数据.但是,HTTP请求包含以下接受标头:
text/html,image/gif,image/jpeg,*; q=.2,*/*; q=.2
这不应该是application / xml吗?
解决方法
使用String参数(URI)调用clojure.xml / parse与此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解析器更改为其他一些实现.