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

xmlpullparser질문이요.!!

0 추천
public class MainActivity extends Activity {

	Button hp_btn, auth_btn;
	EditText hp_edt, auth_edt;
	TextView tv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		hp_btn = (Button) findViewById(R.id.hp_btn);
		auth_btn = (Button) findViewById(R.id.auth_btn);

		hp_edt = (EditText) findViewById(R.id.hp_edt);
		auth_edt = (EditText) findViewById(R.id.auth_edt);
		tv = (TextView) findViewById(R.id.tv1); //파싱한 데이터를 출력하는 TextView

		hp_btn.setOnClickListener(new View.OnClickListener() {

			// hp_btn을 누를시
			// AsyncTask hptask()실행
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub

				new hptask().execute(hp_edt.getText().toString());

			}
		});
	}

	public class hptask extends AsyncTask<String, Void, Void> {
		@Override
		protected Void doInBackground(String... unused) {

			// AsyncTask 실행시
			// postDate() 실행, 인자 unused[0] EditText 값인데 신경안씀..
			postData(unused[0]);

			return (null);

		}

		@Override
		protected void onProgressUpdate(Void... item) {

		}

		// doInBackground() 메소드의 작업이 완료된 직후 호출됨

		@Override
		protected void onPostExecute(Void unused) {

		}

	}

	public void postData(String valueIWantToSend) {
		// Create a new HttpClient and Post Header

		try {
			URL text = new URL("http://localhost/likexml.php");

			XmlPullParserFactory parserCreator = XmlPullParserFactory
					.newInstance();
			XmlPullParser parser = parserCreator.newPullParser();

			InputStream is = text.openStream();

			parser.setInput(is, "UTF-8"); // 가져오기를 시작하는 곳

			int parserEvent = parser.getEventType();

			String data = ""; // TextView tv에 쓰기 위해서
			boolean check_item = false; // tag에 접근했나

			while (parserEvent != XmlPullParser.END_DOCUMENT) {

				switch (parserEvent) {
				case XmlPullParser.START_DOCUMENT:
					break;
				case XmlPullParser.END_DOCUMENT:

					break;
				case XmlPullParser.START_TAG:

					// <phone>을 만나면 true
					if (parser.getName().equals("phone")) {
						check_item = true;
					}
					break;

				case XmlPullParser.TEXT:

					// TEXT을 String data에 저장.

					if (check_item) {
						data = parser.getText();
						check_item = false;
					}
					break;
				}
				parserEvent = parser.next(); // 다음 태그로 이동하기
			}
			// TextView tv 에 출력
			tv.setText("주문 항목 :" + data);

		} catch (Exception e) {
		}

	}

}
//likexml.php

<?php

echo "<?xml version='1.0' encoding='utf-8'?>";

echo "<node>";
echo "

<phone>5050</phone>
<name>7777 </name>
<score>43</score>
";
echo "</node>";
?>

 

likexml.php 이라는 파일에 xml파일처럼  출력해주고 

그 likexml.php에 접속해서 xml을 리스폰받아 읽어 들여 <phone>5050</phone> 에 5050을 파싱을 통하여  textview에 출력해주려는데 출력이 안됩니다.

Asynctask의 문제일까요??

조언좀 부탁드립니다...

찬스님 (300 포인트) 님이 2013년 5월 23일 질문

1개의 답변

0 추천
파싱하는 부분의 코드 알고리즘은 문제가 없어보이는데...

inputstream 에 php파일 내용이 제대로 들어오는지 다시한번 확인해보세요..

로그나 toString으로 한번 찍어서.. 그 외에는 코드는 잘 짜신듯 한데.. ( 대충 봐서 그렇긴 하지만.. )
@didtmdtwt (1,410 포인트) 님이 2013년 5월 24일 답변
답변감사합니다.
제가 log , debug 를 쓸줄 몰라서 그러는데요.
log로 어떻게 찍나요???
android.util.Log.e("111", "디버그찍을 변수값")
...