728x90
DOM 방식으로 XML 파일을 분석할 것이다.
< xxx .xml >
<data>
<item>
<data1>문자열1</data1>
<data2>100</data2>
</item>
<item>
<data1>문자열2</data1>
<data2>200</data2>
</item>
</data>
1. 메니페스트 등록
<uses-permission android:name="android.permission.INTERNET"/>
9.0 이후는 application에서
android:usesCleartextTraffic="true" 추가
2. 쓰레드를 이용
public void btnXML(View view) //http 한줄식 받아오는 것
{
Runnable runnable = new Runnable() {
@Override
public void run() {
try{
String site = "http://(IP):8080/db/data.xml";
URL url = new URL(site);
URLConnection conn = url.openConnection();
InputStream is2 = conn.getInputStream();
//DOM 방식으로 XML 문서를 분석할 수 있는 parser객체 생성
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(is2);
//최상위 Root 태그 객체 얻어온다.
Element root = doc.getDocumentElement(); //xml 전체 얻기
//item 태그들이 담겨 있는 리스트를 얻어온다.
NodeList itemList = root.getElementsByTagName("item");
textview3.setText("");
//item 태그 객체의 수만큼 반복
for(int i =0; i < itemList.getLength(); i++)
{
Element itemTag = (Element)itemList.item(i);
//item 태그 안의 태그들을 얻어온다.
NodeList data1List = itemTag.getElementsByTagName("data1");
NodeList data2List = itemTag.getElementsByTagName("data2");
//0번째 태그 객체를 얻어온다.
Element data1Tag = (Element)data1List.item(0);
Element data2Tag = (Element)data2List.item(0);
//문자열 데이터를 추출
final String data1 = data1Tag.getTextContent();
String data2 = data2Tag.getTextContent();
final int intData2 = Integer.parseInt(data2);
runOnUiThread(new Runnable() {
@Override
public void run() {
textview3.append("data1:"+ data1+"\n");
textview3.append("data2:"+intData2+"\n");
}
});
}
}catch(Exception e){
e.printStackTrace();
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
[] 는 배열이고
{} 는 object
<샘플 .jsp>
<%@ page language="java" contentType="text/json; charset=UTF-8"
pageEncoding="UTF-8"%>
[
{
"data1" : "문자열",
"data2" : 100
},
{
"data1" : "문자열2",
"data2" : 200
}
]
<main.java>
Runnable runnable = new Runnable() {
@Override
public void run() {
try{
String site = "http://(ip):8080/db/dataJson.jsp";
URL url = new URL(site);
//접속
URLConnection conn = url.openConnection();
//서버와 연결되어 있는 스트림을 추출
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
BufferedReader br = new BufferedReader(isr);
String str = null;
StringBuffer buf = new StringBuffer();
do{
str = br.readLine();
if(str != null){
buf.append(str);
}
}while(str != null);
String data = buf.toString(); //json 문자열 다 읽어옴
System.out.println(data);
textview3.setText("");
//JSON 배열 객체를 생성
JSONArray root = new JSONArray(data);
//배열의 객체 개수만큼 반복한다.
for(int i =0; i< root.length(); i++){
// i 번째 JSON 객체를 추출한다.
JSONObject obj = root.getJSONObject(i);
//추출한 JSON 객체로부터 데이터를 추출한다.
final String data1 = obj.getString("data1");
final int data2 = obj.getInt("data2");
runOnUiThread(new Runnable() {
@Override
public void run() {
textview3.append("jsondata1:"+data1+"\n");
textview3.append("jsondata2:"+data2+"\n\n");
}
});
}
}catch (Exception e)
{
e.printStackTrace();
}
}
};
Thread thread = new Thread(runnable);
thread.start();
'Front-end > Android (안드로이드 앱 개발)' 카테고리의 다른 글
Android studio , Firebase 파이어베이스 Google Login 구글 로그인 (0) | 2021.01.01 |
---|---|
Android Studio , Firebase 파이어베이스 android 초기 설정 (0) | 2020.12.28 |
Android Studio , 화면 회전 시 처리 (0) | 2020.08.17 |
Android Studio , 리소스 & values 파일 (0) | 2020.08.16 |
Android Studio , SQLite (0) | 2020.08.14 |
댓글