XML (eXtensible Markup Language)
- XML은 데이터를 저장하고 교환하기 위한 마크업 언어로, 사람이 읽기 쉽고 기계가 해석하기 쉬운 형식.
- 1998년 W3C 표준으로 제정.
- 데이터를 계층적(트리 구조)으로 표현.
XML 예제
<user>
<id>1</id>
<name>홍길동</name>
<email>hong@example.com</email>
</user>
JSON (JavaScript Object Notation)
- JSON은 데이터를 저장하고 교환하기 위한 경량 데이터 포맷으로, 객체 표기법을 기반으로 한 단순한 구조.
- 2001년 Douglas Crockford가 설계.
- 데이터를 키-값 쌍으로 표현.
JSON 예제
{
"id": 1,
"name": "홍길동",
"email": "hong@example.com"
}
XML과 JSON의 주요 비교
항목 |
XML |
JSON |
구조 |
태그 기반의 계층적 구조 |
키-값 쌍과 배열로 표현되는 단순한 구조 |
데이터 타입 지원 |
문자열만 지원 |
문자열, 숫자, 불리언, 배열, 객체 등 다양한 타입 지원 |
가독성 |
복잡한 태그로 인해 덜 직관적 |
간결한 문법으로 더 직관적 |
확장성 |
다양한 데이터 구조와 메타데이터를 표현 가능 |
메타데이터 표현에 제한적 |
데이터 크기 |
태그 사용으로 인해 상대적으로 크기가 큼 |
태그가 없어서 더 작고 네트워크 효율적 |
유효성 검사 |
DTD, XSD를 통한 정교한 유효성 검사 지원 |
스키마(JSON Schema)로 기본 유효성 검사 가능 |
속도 |
파싱 속도가 느림 |
파싱 속도가 빠름 |
호환성 |
대부분의 언어 및 시스템에서 지원 |
대부분의 언어 및 시스템에서 지원 |
사용 사례 |
문서 중심의 데이터 교환 |
REST API, 경량 데이터 교환 |
XML과 JSON의 주요 장단점
XML 장점
- 유연성:
- 트리 구조를 통해 복잡한 데이터 모델 표현 가능.
- 유효성 검사:
- DTD(Document Type Definition)나 XSD(XML Schema)를 사용해 데이터를 검증.
- 다양한 표준 지원:
- XPath, XSLT, SOAP 등의 표준과 통합 가능.
XML 단점
- 복잡성:
- 태그 기반 문법으로 인해 읽기 어렵고 작성하기 복잡.
- 비효율성:
- 데이터 크기가 크며, 네트워크와 스토리지 자원 소모가 많음.
JSON 장점
- 간결성:
- 태그 없이 키-값 쌍으로 데이터를 표현해 간결하고 읽기 쉬움.
- 경량성:
- 데이터 크기가 작아 네트워크 전송 속도가 빠름.
- 언어 호환성:
- 대부분의 프로그래밍 언어에서 JSON 객체를 네이티브로 처리 가능.
JSON 단점
- 스키마 부족:
- 정교한 유효성 검증이 어렵고, 데이터 무결성 보장이 약함.
- 메타데이터 표현 한계:
- XML처럼 데이터에 메타데이터를 포함하기 어려움.
XML과 JSON의 사용 사례
사용 사례 |
XML |
JSON |
웹 서비스 |
SOAP 기반 웹 서비스 |
RESTful API |
문서 교환 |
복잡한 문서 데이터 (예: 전자문서, 보고서) |
경량 데이터 교환 (예: 모바일 앱, 브라우저-서버 통신) |
데이터 저장 |
복잡한 구조의 설정 파일, 메타데이터 포함된 데이터 |
경량 설정 파일, 간단한 데이터 저장 |
데이터 검증 필요 |
데이터 무결성 검증 필요 |
검증이 필요 없는 빠른 데이터 교환 |
XML과 JSON 변환
XML과 JSON은 서로 변환이 가능합니다. 많은 라이브러리에서 이를 지원합니다.
Java 예제
XML → JSON
import org.json.JSONObject;
import org.json.XML;
public class XmlToJson {
public static void main(String[] args) {
String xml = "<user><id>1</id><name>홍길동</name><email>hong@example.com</email></user>";
JSONObject json = XML.toJSONObject(xml);
System.out.println(json.toString(4));
}
}
JSON → XML
import org.json.JSONObject;
import org.json.XML;
public class JsonToXml {
public static void main(String[] args) {
String json = "{\\"id\\":1,\\"name\\":\\"홍길동\\",\\"email\\":\\"hong@example.com\\"}";
String xml = XML.toString(new JSONObject(json));
System.out.println(xml);
}
}
참고