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

php에서 xml파일 생성하고, 안드로이드에서 파싱하는거에 대한거 질문드려요

0 추천

일단 폰에서 값을 입력하면 그것이 mysql에 들어가는 것은 확인했습니다.

현재 구조가 java파일에서 php로 값을 넘겨주면 거기서 mysql에 저장하고 xml파일을 만들어서 

입력 되었는지 아닌지를 알려주도록 되어있는데 이상하게 데이터는 들어가는데 xml파일이 생성이 되지 않네요.

소스 첨부하겠습니다.

1.입력 성공여부 판단 부분

String result = getXmlData("insertresult.xml", "result"); //입력 성공여부
								
	if(result.equals("1")) { //result 태그값이 1일때 성공
			Toast.makeText(Global_Ranking_Activity.this,
			"DB insert 성공", Toast.LENGTH_SHORT).show();
									
			edtname.setText("");
									
		}
		else //result 태그값이 1이 아닐때 실패
			Toast.makeText(Global_Ranking_Activity.this,
				"DB insert 실패", Toast.LENGTH_SHORT).show();

파싱메서드

private String getXmlData(String filename, String str) throws XmlPullParserException, IOException
	{ //태그값 하나를 받아오기위한 String형 함수
		String rss = SERVER_ADDRESS + "/";
		String ret = "";
		
		try { //XML 파싱을 위한 과정
			XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
			factory.setNamespaceAware(true);
			XmlPullParser xpp = factory.newPullParser();
			URL server = new URL(rss + filename);
			InputStream is = server.openStream();
			xpp.setInput(is, "UTF-8");
			
			int eventType = xpp.getEventType();
			
			while(eventType != XmlPullParser.END_DOCUMENT) {
				if(eventType != XmlPullParser.END_TAG) {
					if(xpp.getName().equals(str)) { //태그 이름이 str 인자값과 같은 경우
						ret = xpp.nextText();
					}
				}
				eventType = xpp.next();
			}
		} catch(Exception e) {
			Log.e("Error", "fuck "+e);
		}
		
		return ret;
	}

php 부분

$name = $_REQUEST[name]; //주소에 있는 name값을 받아 name 변수에 저장
$score = $_REQUEST[score]; //주소에 있는 price값을 받아 prica 변수에 저장
 
$qry = "insert into ranking(name, score) values('$name', '$score');";
$result = mysql_query($qry);
 
$xmlcode = "<?xml version = \"1.0\" encoding = \"utf-8\"?>\n"; //xml파일에 출력할 코드
$xmlcode .= "<result>$result</result>\n"; //DB insert가 성공적으로 됐는지 여부를 확인하기 위해 result값을 xml로 출력시킴

$dir = "주소는 개인정보상 안적겠습니다"; //insertresult.xml 파일을 저장할 경로
$filename = $dir."/insertresult.xml"; //파일의 완전한 경로 대입
 
file_put_contents($filename, $xmlcode); //xmlcode의 내용을 xml파일로 출력
?>

참고로 호스팅 업체꺼를 서버로 두고 있고 주소에는 문제가 없는 것 같습니다.

좋은하루되세요

코딩잘하고싶다 (980 포인트) 님이 2013년 7월 17일 질문

1개의 답변

0 추천
이상한 구조를 갖고 있네요.

http request 를 사용해서 리퀘스트 했으면 리스폰스를 그냥 받으면 될 것인데

로그를 남기기 위해서 해당하는 방법을 택하신 건가요?

 

그런데

주소는 개인정보상 안 적겠습니다/insertresult.xml

폴더명도 참 거시기 하네요.

 

그냥 처리 끝에 체크해서 echo "1" 이런식으로 해주셔도 될 것 같은데요.

아니면 저장 하려고 하시던 부분을 echo 하시던가요.

 

그리고 로그를 남기시려면 파일을 덧붙여 쓸 수 있도록 하시는 것이 좋습니다.
Godwish (2,460 포인트) 님이 2013년 7월 17일 답변
...