2010-07-28 6 views
1

Fogbugz XML API에 연결하는 Android 애플리케이션을 작성 중입니다 (API에 요청을 보내고 XML 파일을 수신함). 지금 당장이 요청을 처리 할 서비스를 만들고 사용 가능한 정보에 액세스하기 위해 각각을 구문 분석합니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? inputStream을 얻는다면 SAX 파서를 사용해야합니까?XML (Fogbugz XML API)을 구문 분석하는 방법은 무엇입니까?

 DefaultHttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet("My URL THAT RETURNS AN XML FILE"); 
    HttpResponse response; 
    try { 
      response = httpclient.execute(httpget); 
      HttpEntity entity = response.getEntity(); 
      InputStream stream = entity.getContent(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); 
      String responseString = ""; 
      String temp; 

      while ((temp=bufferedReader.readLine()) != null) 
      { 
       responseString += temp; 
      } 

      if (entity != null) { 
       entity.consumeContent(); 
      } 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

이 코드로 무엇을 달성하고 싶습니까? – Nealv

+0

지금 당장은 HTTP 요청이 제대로 작동하는지 확인하기 위해 문자열을 만들고 표시하고 있습니다. 완료시,이 특정 코드는 fogbugz에 로그인하여 토큰을 포함하는 xml 파일에 액세스해야합니다. 그러나 동일한 서비스에서이 토큰을 사용하여 FogBugz에서 사례를 생성, 편집 또는 삭제하고 특정 정보에 대해 반환 된 XML 파일을 구문 분석 할 수 있어야합니다. – mbauer14

+0

그런데 FogBugz XML API에는 단점이 있습니다. 질문이나 버그가 있으면 [email protected]으로 저에게 연락하십시오. –

답변

3

XOM 또는 Dom4j와 같은 XML DOM 라이브러리를 사용하는 것이 좋습니다. SAX 이벤트보다 트리 구조로 작업하는 것이 훨씬 쉬울 것입니다. 개인적으로, 나는 Foglyn에서 XOM을 사용한다 - Eclipse 플러그인 용 FogBugz. InputStream을 SAX/XOM/Dom4j 파서에 직접 전달할 수 있으므로 먼저 문자열을 작성할 필요가 없습니다. 또한, 올바른 인코딩을 사용했는지 확인하십시오 ...이 점에있어서 코드가 손상되었습니다. (파서에 InputStream을 전달하면 파서가 처리합니다 .XOM에서는 new Builder().build(InputStream) 메서드를 사용할 수 있습니다.)

하나의 FogBugz API 힌트 ... 대소 문자에 대한 세부 정보를 가져올 때 이벤트 (주석)가 필요하지 않으면 전혀 가져 오지 마십시오. 나는. events을 열 목록에 넣지 마십시오.

+0

정보 주셔서 감사합니다! 문자열은 내 Http 요청이 작동하는지 테스트하는 것이었지만 내 코드가 무엇을 의미합니까? 필자는 XML/파싱에 대한 경험이 거의 없으며 사용자가 의미하는 바를 실제로 이해하지 못합니다. – mbauer14

+1

@ mbauer14 : 문제는 문자 인코딩을 지정하지 않고'new InputStreamReader (stream)'을 생성하는 것입니다. 이것은 "기본"인코딩을 사용합니다. 안드로이드에 무엇이 있을지 전혀 모르겠습니다. XML 문서는 XML 선언 (예 :')으로 지정된 인코딩을 가지며 XML 파서는이를 읽는 방법을 알고 있으므로 InputStream을 Reader로 직접 변환하는 대신, InputStream을 XML 파서에 직접 전달해야한다. (Btw, FogBugz 문서에서는 XML API 용 출력을 보낼 때 항상 UTF-8을 사용한다고 말합니다.) –

+0

좋습니다. 감사 – mbauer14

관련 문제