마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

xml 파싱 질문입니다.

0 추천
public class MainActivity extends Activity {
 
private EditText userid;
private EditText passwd;
private Button login;
private TextView text;
 
Handler handler = new Handler();
 
String result;
ArrayList<String> items = new ArrayList<String>();
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
userid = (EditText) findViewById(R.id.userid);
passwd = (EditText) findViewById(R.id.passwd);
login = (Button) findViewById(R.id.login);
text = (TextView) findViewById(R.id.text);
 
// 버튼 이벤트 처리
login.setOnClickListener(new OnClickListener() {
 
@Override
public void onClick(View v) {
showDialog(1);
 
String userid1 = userid.getText().toString();
String passwd1 = passwd.getText().toString();
 
// 서버에 넘겨줄 파라미터 저장
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("userid1", userid1));
list.add(new BasicNameValuePair("passwd1", passwd1));
 
final String urlPath = "http://url주소/xml/Xml.php?userid="
+ userid1 + "&passwd=" + passwd1;
 
// 네트워크 연동을 위한 작업 스레드 생성
Thread t = new Thread(new Runnable() {
 
@Override
public void run() {
 
InputStream is = requestGet(urlPath);
final String result = streamToString(is);
//final String resultXml = streamToString(is);
//final int a = Integer.parseInt(result);
 
handler.post(new Runnable() {
 
@Override
public void run() {
 
if (result !=null) {
text.setText(result);
} else {
text.setText("로그인 실패");
}
 
removeDialog(1);
}
});
 
}
});
t.start();
}
});
 
/*try {
XmlPullParser parser = getResources().getXml(R.id.text);
 
while(parser.getEventType() != XmlPullParser.END_DOCUMENT){
if(parser.getEventType() == XmlPullParser.START_TAG){
if(parser.getName().equals(parser)){
items.add(parser.getAttributeValue(0));
}
}
parser.next();
}
} catch (Throwable t) {
// TODO: handle exception
}
*/
 
 
} // end onCreate
 
// Get 요청처리 메소드
public InputStream requestGet(String requestUrl) {
try {
// 요청하기
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(requestUrl);
HttpResponse response = client.execute(request);
 
// 응답하기
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
 
return is;
} catch (Exception e) {
e.printStackTrace();
}
return null;
 
}// end requestGet
 
//
public String streamToString(InputStream is) {
StringBuffer buffer = new StringBuffer();
 
try {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
String str = reader.readLine();
while (str != null) {
buffer.append(str);
str = reader.readLine();
}
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
 
}// end streamToString
 
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
 
}
 
앱에서 웹에 호출하여 로그인 성공시 php파일에 있는 텍스트를 불러오는 작업을 하고있습니다. 
그런데 다음과 같이 id에서 kim name에서 kdl만 불러오는것이 아닌 소스 전체를 다불러오는데요 
이것을 필요한 부분만 불러올 수 있도록 하는법이 알고싶습니다. 
<data>
  <id>kim</id>
  <name>kdl</name>
</data>  
 
qwlwwmq (560 포인트) 님이 2014년 2월 6일 질문
qwlwwmq님이 2014년 2월 6일 수정

1개의 답변

0 추천
위 코드에서는 서버에서 불러온 inputstream을 문자열로 바꾸네요. xml 파서가 주석처리되어 있구요.

 

님이 원하시는 대로 id에서 kim을, name에서 kdi를 추출하려면 xml 파서를 사용하셔야 합니다.

 

xml 파싱 방법은 여기를 참고하세요.

 

http://blog.naver.com/PostView.nhn?blogId=javaking75&logNo=140180413200
방귀과장 (18,940 포인트) 님이 2014년 2월 6일 답변
...