안드로이드 날씨 어플 XML 소스 일부
- 코딩/Android
- 2019. 12. 13.
package com.example.projectweather;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
public class area1 extends AppCompatActivity {
TextView textview;
Document doc = null;
LinearLayout layout = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.area1);
textview = (TextView) findViewById(R.id.textView1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(),mid.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivityForResult(intent,1000);
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivityForResult(intent,1000);
}
});
}
public void onClick(View view){
GetXMLTask task = new GetXMLTask();
task.execute("http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=109");
}
//private inner class extending AsyncTask
private class GetXMLTask extends AsyncTask<String, Void, Document> {
@Override
protected Document doInBackground(String... urls) {
URL url;
try {
url = new URL(urls[0]);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder(); //XML문서 빌더 객체를 생성
doc = db.parse(new InputSource(url.openStream())); //XML문서를 파싱한다.
doc.getDocumentElement().normalize();
} catch (Exception e) {
Toast.makeText(getBaseContext(), "Parsing Error", Toast.LENGTH_SHORT).show();
}
return doc;
}
@Override
protected void onPostExecute(Document doc) {
String s = "";
String s1 = "";
int count = 0;
count++;
//data태그가 있는 노드를 찾아서 리스트 형태로 만들어서 반환
NodeList nodeList = doc.getElementsByTagName("data");
//data 태그를 가지는 노드를 찾음, 계층적인 노드 구조를 반환
NodeList nodeList1 = doc.getElementsByTagName("location");
for (int j = 0; j < nodeList1.getLength(); j++) {
//날씨 데이터를 추출
if (j % 1 == 0) {
s1 += "" + j/1 ;
}
Node node1 = nodeList1.item(j); //data엘리먼트 노드
Element fstElmnt1 = (Element) node1;
NodeList cityList = fstElmnt1.getElementsByTagName("city");
s1 += cityList.item(0).getChildNodes().item(0).getNodeValue() + ", ";
}
for (int i = 0; i < nodeList.getLength(); i++) {
//날씨 데이터를 추출
s += "" + " \n";
if (i % 13 == 0) {
s += "---------------------------------" + i/13 + "\n";
}
Node node = nodeList.item(i); //data엘리먼트 노드
Element fstElmnt = (Element) node;
NodeList timeList = fstElmnt.getElementsByTagName("tmEf");
s += timeList.item(0).getChildNodes().item(0).getNodeValue() + ", ";
NodeList LowList = fstElmnt.getElementsByTagName("tmn");
s += "최저 = " + LowList.item(0).getChildNodes().item(0).getNodeValue() + ", ";
NodeList highList = fstElmnt.getElementsByTagName("tmx");
//<wfKor>맑음</wfKor> =====> <wfKor> 태그의 첫번째 자식노드는 TextNode 이고 TextNode의 값은 맑음
s += "최고 = " + highList.item(0).getChildNodes().item(0).getNodeValue() + ", ";
NodeList websiteList = fstElmnt.getElementsByTagName("wf");
//<wfKor>맑음</wfKor> =====> <wfKor> 태그의 첫번째 자식노드는 TextNode 이고 TextNode의 값은 맑음
s += "날씨 = " + websiteList.item(0).getChildNodes().item(0).getNodeValue() + "\n" + "";
}
s1 += s + ":";
textview.setText(s1);
super.onPostExecute(doc);
}
}
}//end inner class - GetXMLTask
'코딩 > Android' 카테고리의 다른 글
[Andorid] 안드로이드 스튜디오 WebView 사용하기 (0) | 2020.03.02 |
---|---|
[Android]안드로이드 스튜디오 WebView 뒤로가기 방법 (0) | 2020.03.01 |
안드로이드 날씨 어플 java파일 일부 (0) | 2019.12.13 |
JSON과 XML의 차이점 (0) | 2019.05.17 |
어플 (0) | 2019.05.11 |