[ XML | JSON | YAML ] : 세 가지 데이터 형식의 특징 및 장단점

zeew00·2024년 7월 5일
0
post-thumbnail

1. XML(eXtensible Markup Language)이란 무엇일까

대표적인 마크업 언어에는 `HTML`이 있고 같은 마크업 언어라 생김새는 유사하지만 큰 차이점이 존재하는데 `HTML`의 태그는 이미 만들어서 제공되는 즉 정해진 태그만 사용해야 합니다.

하지만 XML 태그는 사용자가 임의로 만들 수 있고 어떠한 데이터를 설명하기 위해
이름을 임의로 지은 태그로 데이터를 감쌉니다. 이 태그로 데이터를 설명하는 것이며
이 부분에서 데이터의 표시(Markup)가 되고 더 필요한 데이터가 생길 시 태그의
추가나 태그 내에 내용을 추가할 수 있다는 특징이 있습니다.

1-1. 'XML'의 기본 구조

  • 요소(Element) : 데이터와 태그로 구성된 기본 단위이며 시작/종료가 있고
    <태그명></태그명> 형태로 나타냅니다.

  • 속성(Attribute) : 요소에 추가적인 정보를 제공하는 속성명="값"
    쌍 입니다. <태그 Attribue="value">내용</태그>

  • 루트 요소 : XML 문서에서 가장 바깥쪽의 요소로 문서 전체를 포함합니다.

1-2. 'XML' 문서의 예시

  • 아래의 문서는 velog 루트 요소 아래에
    여러 개의 zeew00 요소를 포함하고 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<velog>
    <zeew00>
        <title lang="en">XML 문법</title>
        <name>zeew01</name>
        <major>CE S/W</major>
        <id>2022</id>
    </zeew00>
    <zeew00>
        <title lang="en">XML 문법</title>
        <name>zeew02</name>
        <major>CE C/E</major>
        <id>2022</id>
    </zeew00>
</velog>

1-3. 'XML'의 주석

  • <!--으로 시작해서 -->으로 끝납니다.

  • 시작 태그에는 느낌표가 있지만 종료 태그에는 느낌표가 없습니다.

1-4. 'CDATA(Charactor Data)'

  • 문자 데이터를 XML 데이터로 해석하지 않고 그대로 표현하는 것을 의미하며
    <![CDATA[특수문자 혹은 노출하고 싶은 문자열을 작성]]> 형태로 작성하고
    <![CDATA[]]> 사이에는 공백을 포함할 수 없습니다.

2. JSON(JavaScript Object Notation)이란 무엇일까

  • 데이터를 저장하거나 전송할 때 많이 사용되는 경량 DATA 교환 형식으로
    JS에서 객체를 만들 때 사용하는 표현식을 의미합니다.

  • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서 최근에는
    JSON XML을 대체해서 데이터 전송 등에 많이 사용됩니다.

  • JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌
    단순히 데이터를 표시하는 표현 방법이라고 할 수 있습니다.

2-1. 'JSON'의 문법

  • JSON 형식은 JS 객체와 마찬가지로 Key/Value가 존재할 수 있으며
    Key 값이나 문자열항상 쌍따옴표를 이용하여 표기해야 합니다.

  • 객체, 배열 등의 표기를 사용할 수 있고 일반 JS 객체처럼
    원하는 만큼 중첩하여 사용할 수도 있습니다.

  • JSON 형식에서는 null, number, string, array, abject, boolean을 사용할 수 있습니다.
{
    "veloger": [
        {
            "name": "zeew00", 
            "major": "S/W",
            "id": 2022
        },
        {
            "name": "zeew01",
            "major": "C/E",
            "id": 2022
        },
        {
            "name": "zeew02",
            "major": "G/E",
            "id": 2022
        }
    ]
}

2-2. 'JSON'의 문제점

  • AJAX는 단순히 데이터만이 아니 JS 그 자체도 전달할 수 있는데 이 말은
    JSON 데이터라고 해서 받았는데 단순 데이터가 아니라 JS가 될 수도 있고
    그게 실행될 수 있다는 것입니다. (데이터인 줄 알고 받았는데 악성 스크립트가
    될 수도 있습니다.)

  • 위와 같은 이유로 받은 내용에서 순수하게 데이터만 추출하기 위한
    JSON 관련 라이브러리를 따로 사용하기도 합니다.

3. 'YAML(Yet Another Markup Language)'이란 무엇일까

  • YAML이란 구성 파일을 작성하는 데에 일반적으로 사용되며 사람이 읽을 수 있는 다목적 데이터 직렬화 언어입니다. 마크업 언어가 아니며 사람이 쉽게 이해할 수
    있고 기계가 해석할 수 있는 방식으로 구조화된 데이터를 표현하는 표준화 형식을
    제공합니다.

  • 단순성과 가독성을 염두에 두고 설계 되었으며 들여쓰기, 키-값 쌍,
    직관적인 규칙을 기반으로 최소한의 깔끔한 구문을 사용하고 이러한 접근 방식을
    통해 개발자와 사용자는 복잡한 데이터 구조를 자연어와 유사하고 한눈에 이해하기
    쉬운 형식으로 표현이 가능합니다.

3-1. 'YAML' 형식을 사용하는 이유

  • 최근에 들어 많이 활용되는 데이터 포멧인데 그 이유는 앞서 말씀드린
    사람이 보고 이해하기 쉬운 형태를 가지고 있기 때문입니다.

  • 기본적으로 들여쓰기(indent)를 원칙으로 하며 데이터는 Map(Key-value)
    형식으로 작성되어야 하고 작성할 때부터 들여쓰기를 잘 구분해서 써야하기 때문에
    데이터 포맷이 망가질 염려가 없고 그에 따라서 가독성도 올라갈 수 있습니다.

  • 아래는 YAML 포맷으로 작성한 예시입니다.
  Servers:
  - name: Server1
    administrator: Kim
    created: 20050103132749
    status: active
  - name: Server2
    administrator: Lee
    created: 20210101000000
    status: active

3-2. YAML 사용 방법

1. 데이터 정의 : 기본적으로 Key: Value 형태로 데이터를 정의합니다.

name: Server1
administrator: Kim
created: 20050103132749

2. 들여쓰기 : 들여쓰기로 계층 구조를 표현합니다.

Server:
  name: Server1
  administrator: Kim
  created: 20050103132749

3. 배열 정의 : 배열로 여러 데이터를 표현할 경우 - 기호를 사용합니다.

Servers:
  - name: Server1
    administrator: Kim
    created: 20050103132749
    status: active
  - name: Server2
    administrator: Lee
    created: 20210101000000
    status: active

4. 기타(주석, 띄어쓰기) :

  • 주석은 파이썬처럼 #기호를 사용하여 작성할 수 있습니다.
# Server Info
Server:
  name: Server1
  administrator: Kim
  created: 20050103132749
  • Key: Value형태로 작성할 때 반드시 사이에 띄어쓰기가 들어가야 합니다.
# 띄어쓰기를 사용
name: Server1

# 미사용 Error (not key-value, string)
name:Server1

참고 자료 링크입니다.😁😊

XML 참고 글
JSON 참고 글
YAML이란?
YAML 문법 및 사용 방법

profile
컴공 편입 폴붕이의 일상

0개의 댓글