안드로이드 개발 질문/답변
(글 수 45,052)
네이버 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();
}
}
2011.01.14 11:57:26
이부분을 검색해서 찾아서 테스트를 해보았는데요
전 setInput에 들어가는 값이 StringReader라서 뒤에 케릭터셋이 들어가지가 않네요..
setInput(InputStream inputStream, String inputEncoding) InputStream일때만 케릭터 셋이 들어가고
답변 감사드리지만 해결이 안되어요 ㅠ




xpp.setInput(new StringReader(raw), "utf-8"); 혹은 xpp.setInput(new StringReader(raw), "euc-kr"); 등으로요..
저도 xml에서 한글 파싱은 확실히 안해봐서 확답을 못드리겠네요.
하지만 xpp.setInput(new StringReader(raw), "utf-8"); 이런식으로 해주면 태국어, 베트남어등은 제대로 파싱되었습니다.