XML 형식으로 잘 받아와졌다.
위 URL을 사용하여 spring에서 구현해보도록 하자.
- XML 형식을 json으로 변환하지 않고 parsing하여 res에 넣어주었다.
- sickKey는 병 검색 API로 조회해서 나온 병해충 코드 (ex : 팥/흰가루병 : &sickKey=D00001596)
void getXmlData(GetBugInfoRes getBugInfoRes, String sickKey) throws ParserConfigurationException, IOException, SAXException {
String Url = "http://ncpms.rda.go.kr/npmsAPI/service?" +
"apiKey=2022b5d55c3ea9fac00003b87fa2ed6e69f3" +
"&serviceCode=SVC05" +
sickKey;
// 1. 빌더 팩토리 생성.
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
// 2. 빌더 팩토리로부터 빌더 생성
DocumentBuilder builder = builderFactory.newDocumentBuilder();
// 3. 빌더를 통해 Url를 파싱해서 Document 객체로 가져온다.
Document document = builder.parse(Url);
// 문서 구조 안정화 ?
document.getDocumentElement().normalize();
// XML 데이터 중 <service> 태그의 내용을 가져온다.
NodeList serviceTagList = document.getElementsByTagName("service");
for (int i = 0; i < serviceTagList.getLength(); ++i) {
NodeList childNodes = serviceTagList.item(i).getChildNodes();
for (int j = 0; j < childNodes.getLength(); ++j) {
String nodeName = childNodes.item(j).getNodeName();
String textContent = childNodes.item(j).getTextContent();
if(nodeName.equals("cropName")) getBugInfoRes.setCropName(textContent);
if(nodeName.equals("sickNameKor")) getBugInfoRes.setSickNameKor(textContent);
if(nodeName.equals("sickNameEng")) getBugInfoRes.setSickNameEng(textContent);
if(nodeName.equals("developmentCondition")) getBugInfoRes.setDevelopmentCondition(textContent);
if(nodeName.equals("preventionMethod")) getBugInfoRes.setPreventionMethod(textContent);
if(nodeName.equals("symptoms")) getBugInfoRes.setSymptoms(textContent);
if(nodeName.equals("infectionRoute")) getBugInfoRes.setInfectionRoute(textContent);
}
}
}