XML 이란?
XML(Extensible Markup Language)은 마크업 형태를 쓰는 데이터 교환 형식이다. JSON과 같은 역할을 한다.
마크업형태
마크업(markup)은 태그 등을 이용하여 문서나 데이터의 구조를 나타내는 방법이다.(속성부여 가능)
<?xml varsion="1.0" encoding="UTF-8"?>
<playlist>
<music>
<name>아이유</name> <song>하루끝</song>
</music>
<music>
<name>아이유</name> <song>좋은날</song>
</music>
</playlist>
XML 구조
XML 데이터는 다음과 같이 데이터를 표현한다.
- 프롤로그: 버전, 인코딩
- 루트요소(단 하나만)
- 하위 요소들
<?xml varsion="1.0" encoding="UTF-8"?> // 프롤로그
<playlist> // 루트요소
<music> // 하위요소들
<name>아이유</name> <song>하루끝</song>
</music>
</playlist>
HTML과 XML의 차이
태그
HTML에서는 미리 정의된 태그가 있다. 반면 XML은 미리 정해진 태그가 없어 사용자가 직접 고유한 태그를 만들고 정의할 수 있다.
대/소문자 구분
HTML은 대소문자를 구분하지 않는다. 반면 XML은 대/소문자를 구분한다. XML에서 <Name> 대신 <name>으로 태그를 작성하면 XML 구문 분석기에서 오류가 발생한다. 다음 <Music></music> 태그의 여는 태그와 닫는 태그의 대/소문자를 다르게 했을 경우 아래와 같이 mismatched tag 애러가 발생하는 것을 볼 수 있다.
용도
HTML의 용도는 화면상에 데이터를 표시하는데 있고, XML은 단순히 데이터를 저장 및 전송하는 포맷 용도로 사용된다.
JSON과 XML의 차이
닫는 태그
xml과 json을 비교했을 때 json은 key:value 형태로 값을 표현할 수 있는 반면, xml은 닫는 태그가 계속해서 들어가기 때문에 json에 비교하면 무겁다.
// JSON
{ "name": "JSON" } // key:value로 간단하게 표현
// XML
<name> xml </name> // 닫는 태그 사용
추가적인 모듈
javascript에서 json을 사용할 경우 기본제공 함수인 JSON.parse()를 사용할 수 있다. 반면 xml을 사용하기 위해서는 추가적인 모듈을 받아 사용하거나 직접 구현해야 한다.
const fs = require("fs"); // node.js 기본제공 모듈
const path = require("path"); // node.js 기본제공 모듈
const parser = require("xml2json"); // xml을 사용하기 위해 추가한 모듈
const xmlData = fs.readFileSync(path.join(__dirname, "example.xml"));
const xml = parser.toJson(xmlData);
XML의 활용
xml은 주로 sitemap.xml에 사용된다. sitemap.xml이란 어떠한 사이트를 만들었을 경우 검색엔진에 해당 사이트에 대한 정보를 노출할 필요가 있다. 그때 sitemap.xml을 작성하여 필요한 정보를 노출시킬 수 있다.