XML과 HTML과 JSON

dobby·2025년 7월 16일
0
post-thumbnail

XML이란

XML은 데이터를 정의하는 규칙을 제공하는 마크업 언어이다.
다른 프로그래밍 언어와 달리 XML은 자체적으로 컴퓨팅 작업을 수행할 수 없다.

대신, 구조적 데이터 관리를 위해 모든 프로그래밍 언어 또는 소프트웨어를 구현할 수 있다.

주로 서로 다른 시스템 간에 데이터를 교환할 때 사용하며, 구조 표현용 마크업 언어이다.

자유롭게 태그를 정의할 수 있으며, 계층 구조를 가진다.

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
  </book>
</bookstore>

XML과 HTML의 차이

예시만 보면 XMLHTML은 동일한 것 같다.

HTMLXML 은 애플리케이션 개발과 웹 개발에서 널리 사용되는 두 가지 마크업 언어이다.

이름은 비슷하지만, 사용 사례는 다르다.


HTML 은 주로 애플리케이션의 UI를 개발하는 데 사용된다.
웹 사이트 또는 애플리케이션에서 볼 수 있는 텍스트, 이미지, 버튼, 확인한 및 드롭다운 상자를 렌더링한다.

반면, XML 의 주요 목적은 데이터 교환 및 전송이다.
기계와 사람이 모두 읽을 수 있는 형식으로 데이터를 인코딩한다.

즉, XML 은 데이터가 무엇인지 설명하는 반면, HTML 은 데이터를 최종 사용자에게 표시하는 방법을 결정한다.

또한 XML은 사용자가 태그를 직접 정의할 수 있으며 자유롭게 만들 수 있다.
즉, 데이터의 의미와 구조가 중요하다.

반면 HTML은 미리 정의된 태그만 사용해야 하며, 데이터의 의미는 중요하지 않다.


왜 HTML로는 안될까?

근본적인 차이로 인해 HTML로는 XML이 표현하고자 하는 의미 있는 데이터 표현이 불가하다.

아래와 같은 XML 데이터가 있다고 하자.

<order>
  <customer>수연</customer>
  <item>노트북</item>
  <price>1200000</price>
</order>

이 데이터는 주문 정보라는 의미를 정확히 담고 있다.

이를 HTML로 표현하면 다음과 같을 것이다.

<div>
  <div>수연</div>
  <div>노트북</div>
  <div>1200000</div>
</div>

그저 박스(div )만 있을 뿐, 어떤 것을 의미하는지 알 수 없다.

이 외에도 HTML 은 사람이 화면으로 보는 용도이며 XML 은 앱 ↔ 서버, 회사 ↔ 회사 간의 데이터 교환 용도라는 차이로 데이터 교환에 적합하지 않다.

실제 예시론, 항공사 시스템 ↔ 여행사 시스템 ↔ 결제 시스템 사이에서의 데이터 교환을 들 수 있다.

항공편 정보, 승객 정보, 가격 등을 XML 을 통해 데이터를 교환한다.

XML 로 데이터를 전송해 서로가 데이터의 의미를 정확히 알 수 있다.


HTML과 XML을 사용해야 하는 경우

HTML은 프레젠테이션 언어로 알려진 일종의 마크업이다.
HTML 을 사용해 웹 페이지와 클라이언트 측 애플리케이션을 만들 수 있다.

일반적으로 스타일 지정을 위한 CSS와 동적 동작을 위한 JS와 결합된다.

반대로 두 애플리케이션 또는 시스템 간의 데이터 교환에는 XML 을 사용한다.
동일한 형식을 이해하기 위해 애플리케이션에서는 XML 파일의 내용을 정의하는 XML 스키마 를 공유했다.

XML 은 여전히 널리 사용되고 있지만, 데이터 교환을 위한 또 다른 방법인 JSON 으로의 경량 데이터 포맷은 빠른 파싱으로 인해 더 많이 사용되고 있다.

HTMLXML
what주로 브라우저에서 구조화된 콘텐츠를 표시하는 데 사용되는 마크업 언어주로 컴퓨터 시스템 간에 구조화된 데이터를 교환하는 데 사용되는 마크업 언어
목적프레젠테이션 언어데이터 교환 언어
사용클라이언트측 웹 페이지 또는 웹 앱 구축두 시스템 간에 데이터 교환
태그사전 정의된 태그확장 가능한 태그
타이핑동적XML 스키마를 사용할 때 수정됨

XML과 JSON

데이터 교환을 위한 목적으로 사용한다면, JSON 도 있지 않나?

그렇다! 이전엔 XML 을 주로 사용했지만, JSON 이 구문이 더 간결하고 빠르며 쓰고 읽기가 쉬워 오늘날은 JSON 을 더 많이 쓰는 추세다.

// xml 버전
<user>
  <id>1</id>
  <name>Suyeon</name>
  <email>suyeon@example.com</email>
  <skills>
    <skill>JavaScript</skill>
    <skill>React</skill>
  </skills>
</user>
// json 버전
{
  "user": {
    "id": 1,
    "name": "Suyeon",
    "email": "suyeon@example.com",
    "skills": ["JavaScript", "React"]
  }
}

XML 은 데이터를 기계가 읽을 수 있는 방식으로 저장하는 데 중점을 두므로, 복잡한 데이터의 오류를 검사하는 데 있어서 JSON 보다 더 효율적이다.

또한 더욱 발전된 도구와 라이브러리를 갖추고 있어서 레거시 시스템에서 더 잘 작동할 수 있다.

반면, JSON 은 데이터 교환을 목적으로 설계되었으며 더 간단하고 간결한 형식을 제공한다.
또한 성능과 통신 속도를 향상시킨다.

JSON 은 일반적으로 API, 모바일 앱 및 데이터 스토리지에 더 적합하며, XML 은 데이터 교환이 필요한 복잡한 문서 구조에 더 적합하다.

JSONXML
의미JavaScript Object NotationExtensible Markup Languge
형식키-값 페어가 있는 맵과 유사한 구조다양한 데이터 범주에 대한 네임스페이스가 있는 트리 구조
구문 분석표준 JavaScript 함수를 사용하여 JSON을 구문 분석XML 구문 분석기를 사용하여 XML을 구문 분석
스키마 문서간단하고 유연복잡하고 유연성이 떨어짐
사용 편의성파일 크기가 더 작고 데이터 전송 속도가 더 빠르다쓰고 읽기가 더 복잡하고, 파일 용량을 더 크게 만든다

한마디로, JSON의 장점은 파일 크기가 작아 네트워크 전송 속도가 빠르며 파싱 속도가 빠르며 메모리 효율적이다.

하지만 태그가 없어 데이터의 의미 표현에 약하며, 매우 복잡한 계층 구조나 혼합 콘텐츠 표현엔 부적합하다.

XML은 사용자 정의 태그가 가능해 산업별 표준에 적합하며, DTD, XSD를 통한 강력한 검증이 가능하다.

하지만 문법이 복잡하며 가독성이 떨어지며, 파싱 속도가 느려서 클라이언트 리소스가 부담된다.

JSON보다 파일 크기도 크기 때문에, 네트워크 전송 속도도 비교적 느리다.


Well-formed XML

Well-formed XML 이란, XML 문서가 문법적으로 정확한 형태를 만족하는 것을 말한다.

즉, XML의 규칙을 모두 만족하는 것을 말한다.

XML의 규칙은 다음과 같다.

  1. 모든 XML 요소는 닫는 태그를 가지고 있어야 한다.
  2. 태그는 열린 순서대로 닫혀야 한다.
  3. 반드시 하나의 루트 엘리먼트만 존재한다.
  4. XML 태그는 대소문자를 구분한다.
  5. 모든 XML 요소는 적절하게 중첩되어야 한다.
  6. 모든 XML 문서는 루트 요소를 가지고 있어야 한다.
  7. 속성값은 항상 따옴표로 묶어야 한다.
  8. 빈 요소는 반드시 /> 로 끝나야 한다.
  9. 모든 시작 태그는 하나의 마침태그를 가지고 있어야 한다.
  10. 주석은 <!-- 로 시작해서 --> 로 끝난다.

이 외에도 다양한 규칙이 존재한다.
이러한 XML 문법만 잘 지켜지면 Well-formed XML 이라고 할 수 있다.

이에 대한 검증 방식으론 파서(parser)를 이용한 검증과 온라인 XML 검증 도구를 사용하는 등의 방식이 있다.

XML 파서는 XML 문서를 문법에 맞게 작성했는지 검증하거나, XML 문서를 다른 애플리케이션에서 사용할 수 있는 문서로 변환하는 소프트웨어를 통틀어서 말한다.


XML 파서

파서의 종류는 크게 3가지로 나눈다.

  1. 문법적인 오류만 검사하는 파서

일반적으로 브라우저에 내장된 파서이다. XML 문서를 출력시 자동으로 문법적인 오류를 검사한다.

문법만 맞으면 통과된다.

익스플로러, 크롬, 사파리 같은 브라우저에도 XML 파서가 내장되어 있다.


  1. 유효한 문서인지 검사하는 파서

문서가 DTD 또는 XSD 스키마를 준수하는지를 확인한다.

태그와 속성이 스키마 정의와 일치하는지, 속성의 값 타입이 올바른지, 요소의 순서와 반복 조건이 일치한지 등을 검사한다.

즉, 문법 검사(well-formed)는 기본이며, 이에 유효성 검사가 추가된다.

최근 대부분의 브라우저는 XML 파서 기능을 포함하고 있어 별도 설치가 필요없다.


  1. XML 문서를 다른 형태의 문서로 변형해 주는 파서

기존의 XML 문서를 WML, HTML 같은 형태의 문서 구조로 변형하고 출력해준다.


DOM 기반의 파서

DOM 기반의 파서는 DOM API를 사용한다.
문법 검사와 필요시 유효성 검사도 한다.

파싱 후 트리 구조를 생성하기 때문에, 자식, 부모, 형제 등 관계를 쉽게 탐색/수정할 수 있다.

DOM API를 사용하면 DOM 노드로 접근해 XML 문서 데이터를 변경할 수 있다.

브라우저의 내장 XMl 파서가 DOM 기반의 파서이다.

profile
성장통을 겪고 있습니다.

0개의 댓글