본문 바로가기
코딩취미/프로그램 지식

xml, json, yaml 의 특징과 사용방법

by 브링블링 2024. 1. 17.
반응형

xml, json, yaml 의 특징과 사용방법

XML, JSON, YAML은 모두 데이터를 저장하고 교환하는 데 사용되는 포맷입니다. 각 포맷은 특정 사용 사례와 요구 사항에 따라 선택됩니다. XML은 복잡한 데이터와 메타데이터를 표현할 때 유용하며, JSON은 웹 API와의 통신에 주로 사용됩니다. YAML은 가독성이 중요하거나 들여쓰기를 통해 계층적인 구조를 표현할 때 유리합니다.

결국 선택은 데이터의 성격, 애플리케이션의 요구 사항, 개발자의 선호도에 따라 달라질 수 있습니다. 예를 들어, 인터넷을 통한 데이터 교환에는 JSON이 적합할 수 있으며, 설정 파일이나 내부 데이터 표현에는 YAML이 좋은 선택일 수 있습니다. XML은 이미 많은 시스템에서 사용되고 있으며, 복잡한 데이터 구조를 다루는 데 적합합니다.

 

1. XML (eXtensible Markup Language)

특징

  • 태그 기반의 구조를 가지며, HTML과 유사한 문법을 사용합니다.
  • 데이터와 메타데이터를 모두 표현할 수 있어, 데이터의 구조와 의미를 명확하게 표현할 수 있습니다.
  • 이름공간(namespace) 지원으로 태그의 중복을 방지할 수 있습니다.

사용 방법

  • xml.etree.ElementTree 모듈을 사용하여 XML 데이터를 생성, 수정, 파싱할 수 있습니다.
import xml.etree.ElementTree as ET

# XML 생성
root = ET.Element("Data")
item = ET.SubElement(root, "Item")
item.text = "Example"
tree = ET.ElementTree(root)

# XML 파일로 저장
tree.write("example.xml")

# XML 파싱
tree = ET.parse('example.xml')
root = tree.getroot()
print(root.find("Item").text)

 

2. JSON (JavaScript Object Notation)

특징

  • 경량의 데이터 교환 포맷으로, 사람과 기계가 모두 읽기 쉽게 설계되었습니다.
  • 자바스크립트 객체 문법을 기반으로 하며, 키-값 쌍으로 데이터를 표현합니다.
  • 웹 API와의 통신에 널리 사용되며, 다양한 프로그래밍 언어에서 지원됩니다.

사용 방법

  • json 모듈을 사용하여 JSON 데이터를 생성, 파싱할 수 있습니다.
import json

# JSON 생성
data = {"Item": "Example"}
json_data = json.dumps(data)

# JSON 파일로 저장
with open("example.json", "w") as file:
    file.write(json_data)

# JSON 파싱
with open("example.json", "r") as file:
    parsed_data = json.load(file)
print(parsed_data["Item"])
반응형

3. YAML (YAML Ain't Markup Language)

특징

  • 사람이 읽고 쓰기 편한 데이터 직렬화 포맷입니다.
  • 계층적 구조를 들여쓰기로 표현하여 가독성이 높습니다.
  • 복잡한 데이터 구조를 간결하게 표현할 수 있습니다.

사용 방법

PyYAML 라이브러리를 사용하여 YAML 데이터를 생성, 파싱할 수 있습니다.

import yaml

# YAML 생성
data = {"Item": "Example"}
yaml_data = yaml.dump(data)

# YAML 파일로 저장
with open("example.yaml", "w") as file:
    file.write(yaml_data)

# YAML 파싱
with open("example.yaml", "r") as file:
    parsed_data = yaml.safe_load(file)
print(parsed_data["Item"])

 

!! XML, JSON, YAML 비교

기준 XML JSON YAML
구문 태그 기반 (ex: <item>Example</item>) 키-값 쌍 (ex: {"item": "Example"}) 들여쓰기 기반 (ex: Item: Example)
가독성 낮음 (태그로 인해 더 복잡) 좋음 (간결하고 명확) 매우 좋음 (사람이 읽기 쉬움)
데이터 크기 큼 (태그가 추가적인 공간 차지) 중간 작음 (간결함)
파싱 속도 느림 (복잡한 구조) 빠름 (간단한 구조) 중간
사용 사례 복잡한 데이터 구조, 메타데이터 필요 시 사용 웹 API, 설정 파일, 간단한 데이터 교환에 사용 설정 파일, 복잡한 구조 필요 시 사용

 

* json2yaml site

https://www.json2yaml.com/

반응형