본문 바로가기
Uipath

Uipath 공휴일 구하기 XML 추출하기

by Sol95 2022. 12. 13.
728x90

공휴일 API 사전 작업

1. https://www.data.go.kr/dataset/15012690/openapi.do 접속

 

공휴일 api 사이트

2. 활용신청

3.End Point, 일반 인증키 발급 확인

4.End Point와 일반 인증키(Encoding) 조합하여 원하는 년도 및 날짜 입력 

url은 End Point 값/getRestDeInfo? serviceKey=일반 인증키(Encoding) 값 입력&solYear=2022&numOfRows=100

위에 해당 값이 정상적으로 잘 됐는지 확인하는 방법은 URL 입력창에 End Point 값/getRestDeInfo? serviceKey=일반 인증키(Encoding) 값 입력&solYear=2022&numOfRows=100 그대로 입력하시면 아래와 같이 나옵니다

solYear=원하는 년도

numOfRows=한 페이지 결과수

특정 월을 뽑아야 할 경우 solMonth=원하는 월 입력하면 됩니다

ex) End Point 값/getRestDeInfo? serviceKey=일반 인증키(Encoding) 값 입력&solYear=2022&solMonth=12&numOfRows=100

5.Uipath 작업 시작

5-1. 패키지 관리 접속 -> 공식 -> 검색창에 Uipath.WebAPI 입력 후 설치 후 저장

5-2.Http Request 액티비티 설정

엔드포인트 값 : End Point 값/getRestDeInfo? serviceKey=일반 인증키(Encoding) 값 입력&solYear=2022&numOfRows=100

중요 : 절대 사이트에 있는 End Point 값으로 설정 X

속성 값 세부 설정은 리소스 경로, 응답 내용, 응답 상태 정도만 입력합니다.

리소스 경로 -. txt 확장자 파일 지정

응답 내용 - XML 데이터 가져오기 위한 내용

응답 상태 - 200이 정상 출력 이외에 값을 비정상 및 오류 try catch 활용하여 예외 처리 진행 가능

 

6.Uipath XML 데이터 추출 작업 진행

리소스 경로로 txt 파일 뽑은 데이터를 Reat Text File을 통해 데이터를 읽고

Deserialize XML 액티비티를 활용해 Read Text의 결과에 대한 변수 JsonText를 가져옴

XML 파일에 보면 원하는 날짜를 가져오기 위해서는 locdate 태그를 가져와야 하기 때문에 For문을 통해 각각의 날짜를 추출하여 엑셀 작성

이때 For each에 속성 TypeArgument값은 System.Xml.Linq.XElement 선택 For Each에 in 값Xml_Result.Element("response"). Elements("body"). Elements("items"). Elements("item") 입력하면 됩니다.

 

7. 위에서 작성한 Excel 파일을 Read Ragne를 통해 읽은 후 For Each Data Table로 dt_array 배열 선언

dt_array = dt_array.Append(row(0). ToString). ToArray

여기서 dt_array를 String [] 선언을 해도 에러가 발생합니다

중요 : dt_array = new String(){} 먼저 생성하거나 하단 변수 창에 기본값으로 new String(){} 입력을 해주면 됩니다

IF문을 통해  String.join(", ", dt_array.ToArray). Contains(Today_yyyyMMdd) 입력 여기서 복사 붙여 넣기 한다고 그대로 가져가시면 Contains안에 (Today_yyyyMMdd) 부분 에러 나니까 여기는 now.toString("yyyyMMdd")로 금일 날짜를 작성해주시면 됩니다.

 

IF문 최종 String.join(", ", dt_array.ToArray). Contains(now.toString("yyyyMMdd"))

공휴일만 Excel에 담았는데 실제 업무를 하다 보면 공휴일 제외 사내 기념일 등으로 쉬게 되는 경우가 있기 때문에 공휴일뿐만 아니라 기념일도 추가해서 비교를 해야 하는 부분은 다음 글에 간단하게 작성하겠습니다

728x90
반응형

댓글