네이버 api 를 이용 해서 영화검색을 해 영화정보를 읽어오는것을 간단하게 만들어 본적이 있습니다.

XmlPullParser 를 이용하여 xml을 파싱해서 사용했었습니다.

이것을 참고로 인턴 일때문에 xml을 파싱해서 사용 할 일이 있습니다.

회사에서 xml을 만들어 웹서버에 올려주었고

네이버 api와 같은 코드로 파싱을 했습니다

파싱은 잘 되었는데 한글이 깨지는 문제가 있습니다.

코드에 문제가 있을 수 도 있을거 같아 주소를 넘겨주는 부분만 회사주소가 아닌 네이버api 주소를 줘봤지만 한글 인식을 잘 했습니다.

회사에서 만든 xml이 UTF-8로 인코딩이 안된것일수도 있다는 생각을 해봤지만

해당 xml을 안드로이드에 넣어주고 파일로 읽었을때는 한글을 인식 하였습니다.

어떤부분이 의심이 되는지 혹시 아시면 알려주세요 ㅠ


파싱하는 부분 코드 입니다.

private void startXMLParsing()
{
String uri = xxxxxxx;
// String uri = yyyyyyyyy;
DefaultHttpClient client = new DefaultHttpClient();
HttpGet getMethod = new HttpGet(uri);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = null;
try
{
responseBody = client.execute(getMethod, responseHandler);
} catch (ClientProtocolException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
buildMovieInfo(responseBody);
} catch (XmlPullParserException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private void buildMovieInfo(String raw) throws XmlPullParserException, IOException{
boolean itemBegin = false;
Movie m = null;
String field = null;
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(raw));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT)
{
switch (eventType)
{
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
if (!itemBegin && xpp.getName().equals("str"))
{
itemBegin = true;
m = new Movie();
} else if (itemBegin)
{
field = xpp.getName();
}
break;
case XmlPullParser.END_TAG:
if (xpp.getName().equals("str"))
{
itemBegin = false;
movieArrayList.add(m);
}
break;
case XmlPullParser.TEXT:
String temp = xpp.getText().trim();
if (itemBegin && temp.length() != 0)
{
m.setValue(field, xpp.getText());
}
}
eventType = xpp.next();
}

}