OPEN API를 활용한 XML 변환

Ahn yi·2022년 11월 15일
0

java

목록 보기
18/22

사용 Class

  • URL
    • URL클래스는 URL을 추상화하여 만든 클래스이다.
  • DocumentBuilderFactory?
    • 애플리케이션이 XML 문서에서 DOM 개체 트리를 생성하는 파서를 얻을 수 있도록 하는 팩토리 API를 정의한다.
  • DocumentBuilder
    • XML 문서에서 DOM 문서 인스턴스를 얻기 위한 API를 정의한다. 이 클래스를 사용하면 XML문서를 활용할 수 있다. 이 클래스의 인스턴스는 DocumentBuilderFactory.newDocumentBuilder() 메서드에서 얻을 수 있으며, 이 클래스의 인스턴스를 얻으면 다양한 입력 소스에서 XML을 구문 분석할 수 있다. 이러한 입력 소스는 InputStreams, Files, URL 및 SAX InputSources입니다.
  • HttpURLConnection
    • 각 HttpURLConnection 인스턴스는 단일 요청을 만드는 데 사용되지만 HTTP 서버에 대한 기본 네트워크 연결은 다른 인스턴스에서 공유할 수 있다.
  • Document
    • Document 인터페이스는 전체 HTML 또는 XML 문서를 나타내며, 문서 트리의 루트이며 문서 데이터에 대한 기본 액세스를 제공한다.

내가 한 XML파일 변환

  • OPEN API를 통하여 요청이 정상적으로 이루어질 경우에 Document 형식으로 파싱했다.
  • 일반 XML문서의 파싱이 아닌 OPEN API로 가져온 XML문서에 대한 파싱이기 때문에 데이터 변환이 빈번하게 이루어졌다.
// 사전 준비
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;

URL url = new URL(OPEN API 전체 URL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.getResponseCode(); // OPEN API에 대한 요청 코드

String responseXml = response.toString();
builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(responseXml))); // 데이터 파싱
  • XML문서의 error 태그의 데이터 유무로 문서 자체의 정합성을 판단했다.
if (document.getElementsByTagName("error").getLength() > 0)
  • OPEN API를 활용하여 데이터를 받아오기 때문에 중복을 제거하기 위해 추후에 삭제할 error의 데이터도 삽입하였다.
  • 필요한 데이터의 존재유무를 판단하여 데이터를 가져온다.
document.getElementsByTagName("description").item(0).getChildNodes().getLength() // 데이터 유무 판단
document.getElementsByTagName("description").item(0).getChildNodes().item(0).getNodeValue(); // 데이터 삽입

후기

직접 코드로 XML변환 하는 경우가 처음이므로 XML 변환 자체의 접근에 대한 어려움을 느꼈으며, 처음 형 변환에 대해 성공한 후에는 데이터 정합성에 대한 문제에 대한 고민을 많이 하게 되었다. 단건을 받는 경우가 아니라 Spring Schedular를 사용하여 주기적으로 대용량 데이터를 XML변환을 하였기 때문에 XML변환에만 한정된 기능이 아니었으며, 기본적인 OEPN API 활용 및 데이터 다루는거에 비해서 신경써야할 부분이 많았다. 처음에는 막막했지만 개발을 끝내고 나서는 새로운 기술이 아닌 기능에 대해 구현을 해냈다는 거에 대해서 만족그러운 경험이었다.

profile
소통을 잘하고싶은 백엔드 개발자

0개의 댓글