XML(Extensible Markup Language)
마크업 형태를 쓰는 데이터 교환 형식
태그 등을 이용하여 문서나 데이터의 구조를 나타내는 방법
//예시
<MusicList>
<GD>
<name>삐딱하게</name>
</GD>
</MusicList>
이처럼 <>태그 형태를 말함
<?xml version="1.0" encoding="UTF-8"?>
루트요소는 한개만 가능합니다.
사실상 xml에는 프롤로그와 루트요소 두개를 크게 가지고 있는 겁니다.
이 루트요소는 여러개의 하위 요소들을 가지고 있습니다.
아래 xml 코드를 보면 MusicList는 루트요소가 되는 것이고
그 루트요소 안에 있는 모든 태그들은 하위요소로 생각하면 됩니다.
//예시
<?xml version="1.0" encoding="UTF-8"?>
<MusicList>
<GD>
<name>삐딱하게</name>
</GD>
</MusicList>
이 둘의 기본적으로 markup language이기 때문에 태그를 사용합니다.
하지만, 다른 점이라고 한다면 이 태그의 이름을 맘대로 정할 수 있냐 없냐인 것 같습니다.
<div>, <Header>, <Body>등 태그들이 친숙하고 익숙하게 느껴지신다면 HTML을 써보신 분일 겁니다.
HTML의 경우에는 정해진 태그가 존재하며 그 외의 이름으로는 태그를 생성할 수 없습니다.
반대로, XML의 경우에는 이런 태그 이름이 정해져있지 않습니다.
원하는 태그 이름을 사용할 수 있습니다.
// html
// 에러 없습니다.
<h1>hello</H1>
// xml
// 에러 있어요.
<ost></Ost>
에러 내용 :
There are errors in your xml file: mismatched tag
똑같은 데이터를 저장해도 JSON이 XML보다 조금 더 가볍습니다.
이유는 XML의 경우에는 태그를 열고<Open> 닫기</Close> 하면서 데이터를 저장합니다.
반면, JSON은 key: value 형태이기 때문에 들어가는 글자 수가 더 적습니다.
XML은 다른 언어로 변환하는데 더 많은 노력이 필요합니다.
JSON에서 역직렬화 과정은 변환하려는 언어에 내장된 JSON parse를 사용하면 됩니다.
하지만 XML의 경우에는 외부라이브러리를 로드하여 변환할 수 있습니다.
만약 외부 라이브러리가 없으면 직접 변환을 구현해야합니다.
| 항목 | XML | JSON |
|---|---|---|
| 데이터 표현 | 계층적, 복잡한 구조 표현 가능 | 계층적 구조 표현 가능, 더 간결 |
| 가독성 | 태그가 많아 복잡함 | 깔끔하고 단순 |
| 파일 크기 | 상대적으로 큼 | 작음 |
| 스키마 지원 | 매우 강력 (XSD) | 상대적으로 약함 (JSON Schema) |
| 파싱 속도 | 비교적 느림 | 빠름 |
| 표준화 | 오래된 산업 표준에서 강세 | 최신 웹 서비스에서 강세 |
| 브라우저 지원 | HTML과 친밀 | JSON은 직접 렌더링 불가 |
이것의 목적은 SEO와 사이트 인덱싱 속도를 향상시키기 위한 것입니다.