본문 바로가기
내맘대로 개념정리

XML 과 JSON

by 강물둘기 2023. 1. 3.

1. XML(Extensible Markup Language)

 W3C 표준으로 여러 특수 목적의 마크업 언어를 만드는 용도에서 권장되는 다목적 마크업 언어이다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다.

 XML의 특징

⓵ XML과 같은 구조화된 마크업 언어들은 인간의 읽고 분석하여 이해하는 능력과 컴퓨터의 단순한 계산적인 판독 능력 사이에 타협점을 만들어 줄 수 있다. 

 

⓶ 공유 가능한 방식으로 데이터를 정의하고 저장할 수 있다. 사전 정의된 규칙(DTD, 스키마)을 사용하면 수신자가 이러한 규칙을 사용하여 데이터를 효율적으로 정확하게 읽을 수 있으므로 모든 네트워크에서 데이터를 XML 파일로 손쉽게 전송할 수 있다.

* XML의 구조를 정의하는 방법에는 DTD와 스키마가 있다. 하나의 시스템안에서 사용할 XML데이터는 DTD를 사용하고, 서로 다른 시스템 사이에서 사용할 XML 데이터는 스키마를 사용해 정의한다. DTD와 스키마는 데이터의 유효성 검사를 할 때도 사용된다.

 

⓷ 같은 마크업 언어인 HTML는 데이터를 표현하기 위해 사용되지만, XML은 데이터를 주고 받기 위해 사용된다.

 

⓸ 태그를 사용자가 지정하기 때문에 확장성이 좋다.

 

2. JSON(JavaScript Object Notation)

 JSON은 클라이언트와 서버 간의 HTTP 통신을 위한 텍스트 데이터 포맷이다. 

{
  "name": "Lee",
  "age": 20,
  "alive": true,
  "hobby": ["traveling", "tennis"]
}

 

 JSON의 특징

⓵ Javascript에 종속되지 않는 언어 독립형 데이터 포맷으로 대부분의 프로그래밍 언어에서 사용할 수 있다.

 

⓶ Javascript의 객체 표기법을 따른다.

 

⓷ 서버와 클라이언트간의 교류에서 일반적으로 많이 사용된다.

 

3. XML과 JSON의 공통점과 차이점

공통점

⓵ 데이터를 효율적으로 전달하기 위해 고안되었다.

 

⓶ 기계뿐만 아니라 사람도 쉽게 읽을 수 있다.

 

⓷ 다양한 프로그래밍 언어에 파싱(Parsing)될 수 있다.

 

XMLHttpRequest 객체를 이용하여 서버로부터 데이터를 전송받을 수 있다.

* XMLHttpRequest 객체는 서버로부터 XML 데이터를 전송받아 처리하는 데 사용된다.

이 객체를 사용하면 웹 페이지가 전부 로딩된 후에도 서버에 데이터를 요청하거나 서버로부터 데이터를 전송받을 수 있다. 즉, 웹 페이지 전체를 다시 로딩하지 않고 일부분만을 갱신할 수 있게 된다.

 

차이점

⓵ 표기법이 다르다. XML은 태그를 이용해 작성하고 JSON은 javascript의 객체 형태로 작성한다.

 

⓶ XML 문서는 XML DOM을 이용하여 해당 문서에 접근하지만 JSON의 경우 해당 문자열을 바로 파싱하기 때문에 XML보다 더욱 빠른 처리 속도를 보여준다.따라서 HTML과 자바스크립트가 연동되어 빠른 응답이 필요한 웹 환경에서 많이 사용되고 있다.

 

데이터 형식적 무결성 확보의 차이

  XML의 경우 자체적으로 특정한 규칙(XSD(XML Schema Definition))을 세워서 데이터를 받아들일 때 데이터의 무결성을 판단할 수 있다. 

 규칙을 지키지 않은 데이터는 런타임으로 넘어오지 못하기 때문에 프로그램 오류가 났을 때 최소한 ‘규칙을 지키지 않은 입력 데이터가 웹 API 호출 시 인자로 입력’ 되는 경우는 배제할 수 있다.

 반대로 출력 데이터 무결성까지 확보하면 웹 API가 잘못된 형식의 데이터를 클라이언트에게 보내어 클라이언트가 파싱에 실패하는 경우도 사라진다.

 JSON의 경우 전송받은 데이터의 무결성을 사용자가 직접 검증해야 한다.

따라서 데이터의 검증이 필요한 곳에서는  데이터의 무결성을 검증할 수 있는 XML이 아직도 많이 사용되고 있다.

 

Reference

- http://www.tcpschool.com/

- https://www.coovil.net/xml-vs-json/

- https://velog.io/@surim014/JSON%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

- https://ko.wikipedia.org/wiki/XML

- https://velog.io/@cil05265/XML%EA%B3%BC-JSON%EC%9D%98-%ED%8A%B9%EC%A7%95-%EA%B3%B5%ED%86%B5%EC%A0%90-%EC%B0%A8%EC%9D%B4%EC%A0%90

댓글