일반적으로 REST API를 사용할 때 JSON을 많이 사용하고 있지만 일부 사이트는 XML 포맷을 사용해서 결과를 내려주고 있습니다. 본 포스팅은 XML을 읽어 JSON형태로 변환하는 방법을 설명합니다.
Python에서는 XML 처리를 위해서 Elementary Tree를 지원하고 있습니다. 이는 tree구조로 데이터를 읽어 Dictionary 데이터 타입 대비해서 코드의 양이 다소 증가하게 됩니다. 기존 포스팅에서 설명을 했기 때문에 xmltodict 모듈 사용하도록 하겠습니다. xmltodict모듈은 아래 github 사이트와 참조 링크를 확인해주세요.
Python xmltodict 모듈 사용이 필요한 경우:
- XML 을 JSON으로 변환할 때 사용
- REST API 중 일부는 XML로 결과를 내려주는 경우에 JSON으로 변환
- gitHub사이트: github.com/martinblech/xmltodict
- 참고 링크: www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html
xmltodict 모듈 사용법
Python 에서 기본 설치되는 모듈이 아니기 때문에 pip로 설치해야 합니다.
$ pip3 install xmltodict
Python 코드에서는 xmltodict 모듈을 import 하고 xmltodict.parse() 함수를 호출하면 OrderedDict 타입으로 결과를 리턴합니다. OrderedDict type에서 JSON 변화는 하는 것은 json.dumps() 함수를 사용하면 됩니다. JSON 타입을 다시 xml을 변환하기 위해서는 xmltodict.unparse()을 사용할 수 있습니다.
import xmltodict
import json
# file like object --> read() 함수가 구현되어 있어야 함
xml_string='<header>......</header>'
# xmltodict.parse() 함수는 OrderedDict 으로 return
result = xmltodict.parse(xml_string)
# JSON 형태로 변경하여 Dictionary로 변경
dictionay = json.loads(json.dumps(result))
dictionary['header'] = 1
xmltodict.parse() 함수 설명
JSON to XML xmltodict.unparse() 설명
# 사용 예
import xmltodict
json_type = { "data" : { "name" : "abc"} }
# JSON to XML
xmltodict.unparse(json_type, pretty=True))
관련 글:
[모바일 SW 개발/Python] - Python 명령어 처리: Argparse 모듈 (ArgumentParser 사용 예제)
[모바일 SW 개발/Python] - Python에서 사용자 입력 받는 방법: input()
[모바일 SW 개발/REST API] - 공공 데이터 Open API 사용법: 코로나 확진자 현황 API (sample code)
[모바일 SW 개발/Python] - Python 명령어 처리: Argparse 모듈 (ArgumentParser 사용 예제)
[모바일 SW 개발/Python] - Python에서 사용자 입력 받는 방법: input()
[모바일 SW 개발/Android] - Android에서 Python 실행 (SL4A와 Termux 활용)
[모바일 SW 개발/Python] - Python: JSON 개념과 json 모듈 사용법
[모바일 SW 개발/Python] - 파이썬으로 Apk Download 자동화: Selenium기반의 Apk 크롤러
[모바일 SW 개발/Python] - Python: 폴더 백업 기능 구현 (7zip 압축, Sample code)
[모바일 SW 개발/Python] - Python: OSError: [Errno 98] Address already in use (Flask)
[모바일 SW 개발/Python] - Python 폴더 및 파일 처리 함수 모음
[모바일 SW 개발/Python] - [Tips] XML 에서 예약/특수 문자 처리
[모바일 SW 개발/Python] - [Tips] Python 에서 XML comment 처리 - Sample code 제공
[모바일 SW 개발/Python] - [Tips] Python: XML Parsing 시 multiple elements on top level
[모바일 SW 개발/Python] - Python SyntaxError: Non-ASCII character in file on, but no encoding declared
댓글