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

XML파싱 할때 의도치 않은 NULL값이 들어옵니다. [closed]

0 추천
package com.example.final_project;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.concurrent.DelayQueue;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import android.R.bool;
import android.app.Activity;
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;

public class select_Thread extends Activity implements Runnable {
	public static ArrayList<Thread_result> rdata;

	Thread_result t;
	Handler handler = new Handler() {

		public void handleMessage(Message msg) {
			t = (Thread_result) msg.obj;
			MainActivity.mAdapter.addItem(t.getName(), t.getNumber(),
					t.getlocation());

		}

	};

	public void run() {

		try {
			String enter = "basic_select";
			URL connection = new URL("http://203.247.41.242/" + enter + ".php");
			connection.openStream();
			URL server = new URL("http://203.247.41.242/" + enter + ".xml");

			XmlPullParserFactory parserCreator = XmlPullParserFactory
					.newInstance();
			XmlPullParser parser = parserCreator.newPullParser();
			InputStream is = server.openStream();

			parser.setInput(is, "UTF-8");

			int parserEvent = -1;
			String START = "";
			String TEXT_TAG = "deflut";
			String END = "";
			String nameTag = null, Number = "deflut", locationTag = null;

			while (parserEvent != XmlPullParser.END_DOCUMENT) {

				switch (parserEvent) {
				case XmlPullParser.START_TAG:
					START = parser.getName();
					// Log.i("START", parser.getName());
					break;

				case XmlPullParser.TEXT:
					TEXT_TAG = parser.getText();
					// Log.i("TEXT", parser.getText());
					break;

				case XmlPullParser.END_TAG:
					END = parser.getName();
					// Log.i("END", parser.getName());
					break;

				}
				Message msg = Message.obtain();

				if (START.equals(END)) {
					// Log.i("START", START);

					if (START.equals("item_number")) {

						// Log.i("start", "start : " + START);
						// Log.i("Text", TEXT_TAG);
						// Log.i("end", "end : " + END);
						Number = TEXT_TAG;

						 Log.i("here1", "번호"+Number);

					} else if (START.equals("name")) {
						nameTag = TEXT_TAG;
						//
					} else if (START.equals("location")) {
						locationTag = TEXT_TAG;

						Thread_result data = new Thread_result();
						data.setName("이   름 : " + nameTag);
						data.setNumber("물품번호 : " + Number);
						data.setlocation("사용장소 : " + locationTag);
						msg.obj = data;
						handler.sendMessage(msg);

					}

				}

				parserEvent = parser.next();
			}

		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			Log.i("tag", "URL _ error");
			e.printStackTrace();
		} catch (XmlPullParserException e) {
			// TODO Auto-generated catch block
			Log.i("tag", "XML _ error");
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block

			e.printStackTrace();
		}
		// TODO Auto-generated method stub

	}

}

위처럼 소스코딩해서 파싱했는데 nameTag와 locationTag는 정상적으로 작동하여 ListView까지 출력되는데 

유독 Number만 해결이 안됩니다. 

05-10 19:16:43.084: I/here1(17129): 번호201005-0009-001
05-10 19:16:43.084: I/here1(17129): 번호
05-10 19:16:43.089: I/here1(17129): 번호201005-0009-002
05-10 19:16:43.089: I/here1(17129): 번호
05-10 19:16:43.094: I/here1(17129): 번호201006-0010-001
05-10 19:16:43.094: I/here1(17129): 번호

로그캣으로 확인한 결과 NULL값이 2번들어와서 NULL값이 전달되는거 같은데.. 도대체 왜 이렇게 되는지 이해를 할 수가 없습니다. 

 

<?xml version = "1.0" encoding = "utf-8"?>
<DB_20080918>
<data>
<department>컴퓨터공학과</department>
<item_number>201005-0009-001</item_number>
<name>컴퓨터(본체)</name>
<manager>기타</manager>
<location>090908-0</location>
<use>교보재</use>
<state>양호</state>
<price>1660000 </price>
<user></user>
<invest_date></invest_date>
<purchase_date></purchase_date>
<dump_data></dump_data>
</data>
<data>
<department>컴퓨터공학과</department>
<item_number>201005-0009-002</item_number>
<name>컴퓨터(본체)</name>
<manager>기타</manager>
<location>090908-0</location>
<use>교보재</use>
<state>양호</state
><price>1660000 </price>
<user></user>
<invest_date></invest_date>
<purchase_date></purchase_date>
<dump_data></dump_data>
</data>
</DB_20080918>

XML파일은 위와같은 형식으로 구성되어 있습니다.

질문을 종료한 이유: 해결
runtiime (230 포인트) 님이 2014년 5월 10일 질문
runtiime님이 2014년 5월 17일 closed

1개의 답변

+2 추천
 
채택된 답변
자체해결했습니다 처음data종료태그와 그 다음의  data시작테그가 같아서 널값이 들어오는것 이었습니다.
runtiime (230 포인트) 님이 2014년 5월 11일 답변
runtiime님이 2014년 5월 17일 채택됨
...