File Writing 부분은 작성하지 않았음...
여러모로 문제가 있음
참고용...
import java.net.URLEncoder;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class getMsrstnAcctoRltmMesureDnsty {
// tag값의 정보를 가져오는 메소드
private static String getTagValue(String tag, Element eElement) {
NodeList nlList = eElement.getElementsByTagName(tag).item(0).getChildNodes();
Node nValue = (Node) nlList.item(0);
if(nValue == null)
return null;
return nValue.getNodeValue();
}
public static void main(String[] args) {
int page = 1; // 페이지 초기값
int totalCount = 0; // 전체 건수
int nowCnt = 0; // 현재 페이지의 건수
// JSON Object
JSONArray jitem = new JSONArray();
try{
while(true){
// 서비스 인증키입니다. 공공데이터포털에서 제공해준 인증키를 넣어주시면 됩니다.
String serviceKey = "키입력";
// 한페이지에서 읽어올 개수
String numOfRows = "5";
// 한글은 encoding 수행합니다.
String stationName = URLEncoder.encode("종로구", "UTF-8");
String ver = "1.0";
String dataTerm = "DAILY";
String RtnType = "XML";
StringBuffer jsonSb = null;
String urlStr = "http://openapi.airkorea.or.kr/"
+ "openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"
+ "?"
+ "ServiceKey=" + serviceKey
+ "&stationName=" + stationName
+ "&dataTerm=" + dataTerm
+ "&pageNo=" + page
+ "&numOfRows=" + numOfRows
+ "&ver=" + ver
+ "&_retrunType=" + RtnType
;
DocumentBuilderFactory dbFactoty = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactoty.newDocumentBuilder();
Document doc = dBuilder.parse(urlStr);
if ( page == 1 ) {
// 파싱할 tag
NodeList nListT = doc.getElementsByTagName("body");
Node nNodeT = nListT.item(0);
if(nNodeT.getNodeType() == Node.ELEMENT_NODE){
Element eElementT = (Element) nNodeT;
totalCount = Integer.parseInt(getTagValue("totalCount", eElementT));
} // for end
}
// root tag
doc.getDocumentElement().normalize();
// 파싱할 tag
NodeList nList = doc.getElementsByTagName("item");
//JSONObject
for(int temp = 0; temp < nList.getLength(); temp++){
Node nNode = nList.item(temp);
if(nNode.getNodeType() == Node.ELEMENT_NODE){
Element eElement = (Element) nNode;
JSONObject jobj = new JSONObject();
jobj.put("dataTime", getTagValue("dataTime", eElement).toString());
// jobj.put("so2Value", Float.parseFloat(getTagValue("so2Value", eElement).toString()));
// jobj.put("coValue", Float.parseFloat(getTagValue("coValue", eElement).toString()));
// jobj.put("o3Value", Float.parseFloat(getTagValue("o3Value", eElement).toString()));
// jobj.put("pm10Value", Float.parseFloat(getTagValue("pm10Value", eElement).toString()));
// jobj.put("pm25Value", Float.parseFloat(getTagValue("pm25Value", eElement).toString()));
// jobj.put("khaiValue", Float.parseFloat(getTagValue("khaiValue", eElement).toString()));
// jobj.put("khaiGrade", Float.parseFloat(getTagValue("khaiGrade", eElement).toString()));
// jobj.put("so2Grade", Float.parseFloat(getTagValue("so2Grade", eElement).toString()));
// jobj.put("coGrade", Float.parseFloat(getTagValue("coGrade", eElement).toString()));
// jobj.put("o3Grade", Float.parseFloat(getTagValue("o3Grade", eElement).toString()));
// jobj.put("no2Grade", Float.parseFloat(getTagValue("no2Grade", eElement).toString()));
// jobj.put("pm10Grade", Float.parseFloat(getTagValue("pm10Grade", eElement).toString()));
// jobj.put("pm25Grade", Float.parseFloat(getTagValue("pm25Grade", eElement).toString()));
jobj.put("so2Value", getTagValue("so2Value", eElement).toString());
jobj.put("coValue", getTagValue("coValue", eElement).toString());
jobj.put("o3Value", getTagValue("o3Value", eElement).toString());
jobj.put("pm10Value", getTagValue("pm10Value", eElement).toString());
jobj.put("pm25Value", getTagValue("pm25Value", eElement).toString());
jobj.put("khaiValue", getTagValue("khaiValue", eElement).toString());
jobj.put("khaiGrade", getTagValue("khaiGrade", eElement).toString());
jobj.put("so2Grade", getTagValue("so2Grade", eElement).toString());
jobj.put("coGrade", getTagValue("coGrade", eElement).toString());
jobj.put("o3Grade", getTagValue("o3Grade", eElement).toString());
jobj.put("no2Grade", getTagValue("no2Grade", eElement).toString());
jobj.put("pm10Grade", getTagValue("pm10Grade", eElement).toString());
jobj.put("pm25Grade", getTagValue("pm25Grade", eElement).toString());
JSONParser jsonParser = new JSONParser();
jitem.add(jsonParser.parse(jobj.toJSONString()));
} // for end
} // if end
nowCnt = page * Integer.parseInt(numOfRows);
page += 1;
if(nowCnt > totalCount){
break;
}
} // while end
} catch (Exception e){
e.printStackTrace();
} // try~catch end
System.out.println("[message]:" + jitem.toJSONString());
System.out.println("End of Main");
} // main end
}
'4차 산업 > ELK 관련' 카테고리의 다른 글
Logstash 대기 오염 관련 Json 처리 예제 (0) | 2019.03.21 |
---|