ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • XML & JSON & YAML
    Web 2021. 10. 30. 18:48

    XML & JSON & YAML 모두 데이터를 표현하는 형식이다. 

    표와 같은 구조를 가진 정보를 한 줄로 보내기 위해선 정보를 주는 쪽과 받는 쪽에 합의된 형식이 있어야 한다.

     

     

     

    XML (Extensible Markup Language)


    <!-- XML 주석 --> 
    <?xml version="1.0" encoding="UTF-8"?>
    <TITLE color="red" type="bold">내용</TITLE>
    
    <users>
      <user>
        <name>홍길동</name>
        <score>95</score>
        <hobby>
          <element>Soccer</element>
          <element>Ninza</element>
        </hobby>
      </user>
    
      <user>
        <name>이순신</name>
        <score>100</score>
        <hobby>
          <element>Sing</element>
          <element>Dancing</element>
        </hobby>
      </user>
    </users>
    • HTML 과 흡사한 구조를 가지며 태그로 표현된다. 
    • 트리계층 구조이며 루트요소부터 시작해 여러 개의 자식을 계층적으로 포함한다. 
    • 주석을 넣을 수 있다. 
    • 문법적인 오류가 발생해도 각각 태그로 구분되어 있어 다른 태그들은 태그가 읽을 수 있다. 
    • 안정성을 요구하는 곳에 XML 
    • <xml> 태그를 이용하여 XML 문서임을 명시할 수 있고 아래 속성을 추가할 수 있다.
      • version: XML 문서의 버전 
      • encoding: XML 문서의 문자 셋(Character Set)을 명시한다. 일반적으로 UTF-8을 사용한다. 
      • standalone: XML 문서 외부 소스 데이터에 의존하는지의 여부를 명시한다.
    • 태그 안에 속성을 명시할 때는 따옴표를 넣어주어야 한다.
    • 많은 태그 때문에 문자량이 늘어나 응답시간이 다소 느리다.

     

     

     

     

    Json (JavaScript Object Notation)


    • 서버와의 통신규약인 Rest API를 사용할 때 가장 많이 사용된다. 
    • 거의 모든 프로그래밍 언어에서 JSON을 지원한다는 점에서 채택률이 높다.
    • 주석을 사용할 수 없다. 
    • key & value 형태를 가지고 있다. 
    • 대괄호 { } 와 큰 따옴표를 이용하여 계층형 구조를 형성한다. 

     

     

     

    YAML


    • 주석 사용이 가능하다. 
    • 개행, 공백으로 블록을 인식한다. 
    • 공백으로 데이터를 구분하므로 한 줄로 작성할 수 없다. 
    • YAML 은 한글과 같은 유니코드를 그대로 사용할 수 있다.
    • (JSON은 한글 등 멀티 바이트 문자를 인코딩하여 보여준다.)
    • 상속등의 기능도 적용할 수 있다. 

     

     

     

    참고자료


    https://ndb796.tistory.com/251

    https://www.youtube.com/watch?v=55FrHTNjTCc 

    'Web' 카테고리의 다른 글

    Thread Pool (Java, Tomcat, SpringBoot)  (0) 2024.07.25
    [DB] Connection Pool 정리  (1) 2021.09.11
    쿠키(Cookie)와 세션(Session) 정리  (0) 2021.09.04
    HTTP 프로토콜 정리  (0) 2021.08.28
Designed by Tistory.