XML
기본 정보
- 명칭: XML
- 영문명: Extensible Markup Language
- 한글명: 확장 가능한 마크업 언어
- 분류: 데이터 저장 및 교환 포맷
- 개발 기관: World Wide Web Consortium (W3C)
- 최초 권고안: 1998년
- 주요 용도: 데이터 저장, 시스템 간 데이터 교환, 설정 파일
- 관련 주제: #XML #HTML #JSON #데이터포맷 #API
개요
XML은 데이터를 구조화하여 저장하고 전달하기 위해 만들어진 마크업 언어이다.
HTML이 화면 표시를 목적으로 한다면 XML은 데이터 자체를 표현하는 데 목적이 있다.
과거에는 웹 서비스, ERP, 금융 시스템, 공공기관 시스템, RSS 피드 등에서 매우 많이 사용되었으며 현재는 JSON 사용 비중이 높아졌지만 여전히 다양한 시스템에서 활용되고 있다.
XML 구조
XML Document
↓
Element
↓
Attribute
↓
Value
예시
<user>
<name>구름</name>
<age>30</age>
</user>
기본 문법
선언부
<?xml version="1.0" encoding="UTF-8"?>
XML 문서의 시작 부분에 위치한다.
요소(Element)
<name>구름</name>
- 시작 태그
- 내용
- 종료 태그
로 구성된다.
속성(Attribute)
<user id="1">
구름
</user>
속성은 추가 정보를 저장한다.
중첩 구조
<user>
<name>구름</name>
<age>30</age>
</user>
트리(Tree) 구조로 표현된다.
XML 트리 구조
user
├─ name
└─ age
XML 문서는 기본적으로 계층 구조를 가진다.
예제
회원 정보
<?xml version="1.0" encoding="UTF-8"?>
<member>
<id>1</id>
<name>구름</name>
<email>cloud@example.com</email>
</member>
상품 정보
<product>
<name>노트북</name>
<price>1500000</price>
</product>
XML과 HTML 차이
| XML | HTML |
|---|---|
| 데이터 표현 | 화면 표시 |
| 태그 직접 정의 가능 | 정해진 태그 사용 |
| 데이터 저장 목적 | UI 구성 목적 |
| 엄격한 문법 | 비교적 자유로움 |
HTML
<h1>Hello</h1>
XML
<message>Hello</message>
XML과 JSON 비교
XML
<user>
<name>구름</name>
<age>30</age>
</user>
JSON
{
"name": "구름",
"age": 30
}
| XML | JSON |
|---|---|
| 태그 기반 | Key-Value 기반 |
| 용량 큼 | 용량 작음 |
| 가독성 낮음 | 가독성 높음 |
| 스키마 지원 강함 | 단순함 |
| 과거 시스템 활용 | 현대 API 표준 |
DTD
DTD(Document Type Definition)는 XML 구조를 정의한다.
<!DOCTYPE user [
<!ELEMENT user (name, age)>
]>
XSD
XML Schema Definition
<xs:element
name="user"
type="string"
/>
DTD보다 강력한 검증 기능을 제공한다.
XPath
XML 내부 데이터를 조회하기 위한 문법이다.
/user/name
결과
구름
XSLT
XML 데이터를 HTML 등으로 변환하는 기술이다.
XML
↓
XSLT
↓
HTML
AJAX와 XML
초기 AJAX는 XML 데이터를 사용하였다.
AJAX
=
Asynchronous JavaScript
And XML
현재는 대부분 JSON을 사용한다.
XML 활용 분야
- ERP
- 금융 시스템
- 공공기관 시스템
- RSS 피드
- Android 설정 파일
- Maven 설정
- Spring 설정
- SOAP API
- Office 문서 형식
Android XML
안드로이드 UI는 XML로 작성된다.
<TextView
android:text="Hello"
/>
Maven pom.xml
Java 프로젝트 설정 파일
<dependency>
<groupId>org.springframework</groupId>
</dependency>
Sitemap.xml
SEO에서 사용하는 사이트맵
<url>
<loc>
https://example.com
</loc>
</url>
RSS Feed
블로그 및 뉴스 구독에 사용된다.
<rss>
<channel>
<item>
</item>
</channel>
</rss>
장점
- 구조화된 데이터 표현
- 플랫폼 독립적
- 스키마 검증 가능
- 계층 구조 표현 우수
- 다양한 시스템 지원
단점
- 데이터 용량 큼
- 문법이 복잡함
- JSON보다 가독성 낮음
- 처리 속도가 느릴 수 있음
- 현대 API에서는 사용 감소
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- 신규 API는 JSON 우선 고려
- XML 연동은 레거시 시스템 대응 시 활용
- Sitemap.xml은 SEO 필수
- RSS Feed 제공 검토
- XML 파싱 시 인코딩 확인
- XSD 검증 적용
- SOAP 연동 시 XML 이해 필요
- Android 개발 시 XML 활용
- Maven 및 Spring 설정 파일 이해
- 외부 시스템 연동 시 XML 지원 여부 확인
XML과 함께 사용하는 기술
대표 활용 사례
- Sitemap.xml
- RSS Feed
- Android Layout
- Maven pom.xml
- Spring 설정 파일
- SOAP API
- ERP 데이터 교환
- 금융 전산 시스템
관련 문서
출처
- W3C XML Specification
- MDN Web Docs - XML
- XML Schema 표준 문서