Programing/JAVA

java xml 파싱 SAX방식 api연계 xml parsing SAX DOM

리커니 2017. 10. 30.
반응형

java xml 파싱 SAX방식 api연계 xml parsing SAX DOM JDOM

 

 

[SPEC]

전자정부프레임워크 3.6

자바 8

톰캣 7

 

OpenAPI 로 제공되는 xml 데이터를 파싱 하는 방법을 알아보겠습니다.

JDOM이라는 라이브러리를 활용합니다.

JDOM 다운로드는 아래의 Link를 참고하세요.

 

Link : JDOM 다운로드

 

 

 

 

 

 

다운로드 후 압축을 풀면 위와 같은 폴더가 생성됩니다.

idom-2.0.6.jar 파일을 프로젝트에 import 해주시면 됩니다.

 

 

라이브러리를 추가하는 방법은 아래의 Link를 참고하세요.(단순히 jar를 add 해주셔도 됩니다.

 

Link : 이클립스 라이브러리 생성 방법 How to make library in eclipse

 

 

 

 

파싱할 xml의 구조는 아래와 같습니다.

 

 

 

<result> 태그가 있고 그 내의 자식으로

<record>

<data1>데이터1</data1>

<data2>데이터2</data2>

<data3>데이터3</data3>

<data4>데이터4</data4>

<data5>데이터5</data5>

</record>

 

태그가 반복되는 구조입니다.

 

소스는 아래와 같습니다.

 

String baseUrl = "http://aljjabaegi.tistory.com?key=";
String key = "API키";



try {
       SAXBuilder builder = new SAXBuilder();
       Document doc = builder.build(new java.net.URL(baseUrl+key));
       Element root = doc.getRootElement();  //result

        List<Element> list = root.getChildren("record");
        List<InciVO> inciList = new ArrayList<InciVO>();
        for(int i=0;i<list.size(); i++){
             InciVO inciData = new InciVO();
             Element inci = list.get(i);
             inciData.setData1(inci.getChildText("data1"));
             inciData.setData2(inci.getChildText("data2"));

             inciData.setData3(inci.getChildText("data3"));

             inciData.setData4(inci.getChildText("data4"));

             inciData.setData5(inci.getChildText("data5"));
             inciList.add(inciData);
        }
  } catch (Exception e) {
       e.printStackTrace();
  }

 

구조와 소스를 비교해 보시면 그리 어렵지 않으실겁니다.

 

SAXBuilder 를 생성한후 build를 통해 URL로 부터 xml 데이터를 받아옵니다.

rootElement는 <result> 태그가 될것이고,

그 rootElement에 record자식 element를 받아 리스트 만큼 반복 하여 VO에 저장하는 방식 입니다.

 

xml을 파싱하는 많은 방법들이 있지만 이 방식이 가장 간단하고 직관적인거 같네요.

 

반응형

댓글

💲 추천 글