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
- 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
'내맘대로 개념정리' 카테고리의 다른 글
Javascript Class로 배열 만들어보기 (0) | 2023.10.13 |
---|---|
객체지향 프로그래밍과 함수형 프로그래밍 (0) | 2023.01.13 |
콜백 함수(Callback Function) (0) | 2022.12.31 |
계산기 CSS 정리 (0) | 2022.12.29 |
Typescript를 사용하는 이유는 무엇일까? (0) | 2022.12.24 |
댓글