2010-07-03 3 views
4

URI가있는 clojure.xml/parse 함수를 호출 할 때 Clojure는 HTTP GET 요청을 수행하여 데이터를 가져옵니다. HTTP 요청이 다음은 헤더를 받아들이 포함하지만 :clojure.xml/parse 호출의 헤더 수락

text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 

application/xml을해야하지? String 매개 변수 (URI)로 clojure.xml/parse를 호출

+3

이것은 버그 리포트처럼 들리므로이 질문을 Clojure의 Google 그룹에 보내야한다고 생각합니다. 또한'clojure.xml'에는 다른 결함이있어 현재로서는이 문제를 우선 순위에 두지 않을 것입니다. 그러므로'clojure.contrib.lazy-xml'이 아마도 더 나은 선택 일 것입니다. (설명하는 특정 문제가 없는지 확실하지 않으므로 답변으로 게시하지 마십시오.) –

+0

좋아, Google 그룹에 게시했습니다. – StackedCrooked

답변

1

이 자바 코드와 유사하다 :

SAXParserFactory.newInstance().newSAXParser().parse("<your_uri>", <instance of XMLHandler provided by Clojure>); 

Clojure에서이 HTTP GET 요청을 수행하지 않습니다. 그냥 기본 파서로 SAX 파서를 사용합니다. Sax 파서는 내부적으로 XMLInputSource의 인스턴스를 만들고이를 XMLEntityManager까지 모두 전달합니다. 클래스 XMLEntityManager 연결을 열고 당신의 XML을 받고 (이상 HTML 등)에 관련된 모든 작업을 수행 문서 : XmlInputSource 다음, XMLEntityManager 세트까지 HTTP 요청 속성 HTTPInputSource의 인스턴스

URL location = new URL(expandedSystemId); 
URLConnection connect = location.openConnection(); 
... skip ... 
stream = connect.getInputStream(); 

합니다. 그러나 XMLInputSource (SAXParser의 경우 우리가 가지고있는 기능)과 유사한 기능은 없습니다.

SAX 파서를 다른 구현으로 변경하는 데 도움이 될 것 같군요.