서버와 데이터가 통신할 때 수신하는 문자열 데이터는 대부분 xml, json이다.
DocumentBuilderFactory factory = DocumentBulderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(inputStream, null);
RootElement root = new RootElement("current"); // 루트 태그
// 하위 태그
Element cityElement = root.getChild("city");
Element tempElement = root.getChild("temperature");
// 파싱함수
cityElement.setStartElementListener(new StartElementListener(){
// city 태그를 만나면 위의 start() 함수를 자동으로 호출해줌
cityView.setText(attributes.getValue("name");
}
// 이벤트 핸들러 함수 호출
Xml.parse(inputStream, Xml.Encoding.UTF-8, root.getContentHandler());
xmlPullParser parser = Xml.newPullParser();
// setInput()에 InputStream을 매개변수로 주면 파싱 시작
parser.setInput(inpputStream, null);
int eventType = parser.getEventType();
// 파싱 조건문
while(eventType != XmlPullParser.END_DOCUMENT){ // 문서 파싱끝난다면
String name = null;
if(eventType == XmlPullParser.START_TAG){
name = parser.getName();
if(name.equals("city"))
// ..
else if(name.equals("temperature")
// ..
}
// 다음 이벤트 발생
eventType = parser.next();
}
JSONObject 클래스 + JSONArray 클래스 이용
JSONObject
: JSON의 {]로 묶이는 부분의 내용을 표현
JSONArray
: JSON의 [ ]로 묶이는 부분의 내용을 표현
[ ]는 {}을 여러개 포함하는 형태, {} 1개당 JSONObject의 객체,
객체 여러개 담는 객체 = JSONArray
// 파싱할 JSON문자열 대입하면 최상위 객체가 만들어짐
JSONObject root = new JSONObject(json);
// getString(): 데이터 얻기
String name = roog.getString("name")
JSONObject main = roog.getJSONObject("main")
String temp = main.getString("temp")
JSONArray array = root.getJSONArray("weather");
JSONObject arrayItem = array.getJSONObject(0);