Dev

[데이터 교환 형식] xml

Dream COM Ddulut 2025. 4. 11. 17:17

XML(Extensible Markup Language)이란?

XML은 데이터의 구조와 의미를 사용자 정의 태그로 표현할 수 있는 마크업 언어입니다. 

주로 시스템 간 데이터 저장 및 교환에 활용됩니다.

 

Markup

태그나 기호를 활용해 데이터 구조나 의미를 부여하는 것

 

[예시]

• HTML, XML: 태그 중심(<>)

• Markdown: 기호(#, **, -)

• LaTeX: 백슬래시 + 명령어 (/)

 

 

XML의 기본 구성

XML은 프롤로그, 하나의 루트 요소, 그리고 그 안에 포함되는 여러 하위 요소들로 구성됩니다.

 

<!--전체 구조-->
<?xml version="1.0" encoding="UTF-8"?>    <!--프롤로그-->

<rootElement>   <!--루트 요소-->
  <childElement>   <!--하위 요소-->
     ...
  </childElement>
</rootElement>

 

프롤로그(Prolog)

문서의 시작 부분에 위치하며, version, encoding 내용을 포함한다.

• version: XML 버전

encoding: 문자 인코인 방식 

<!--예시-->
<?xml version="1.0" encoding="UTF-8"?>
더보기

<?...?>은 '처리 명령(Processing Instruction, PI)'이다. 

파서에게 전달되는 지시사항을 포함한다.

 

루트 요소(Root Element)

XML 문서 내 다른 모든 하위 요소들을 감싸는 가장 바깥 요소이다.

루트 요소는 단 하나만 존재해야하며, 두 개 이상 존재할 경우 문법 오류(Invalid XML)가 발생한다.

 

하위 요소(Child Elements)

루트 요소 내부에 포함되는 요소들이다. XML 문서의 데이터를 실제로 표현하는 역할을 한다.

요소 간 중첩 가능하며, 모든 태그는 반드시 열고 닫아야한다. 

 

 

HTML과 XML 차이점 비교

HTML은 데이터를 '표시'하기 위한 마크업 언어로 미리 정의된 태그만 사용 가능합니다.

대소문자를 구분하지 않아 문법 규칙이 비교적 느슨합니다.

XML은 데이터를 '저장 및 전송'하기 위한 마크업 언어로 사용자 정의 태그 사용이 가능합니다.

대소문자를 구분하고, 닫는 태그를 누락할 수 없어 문법 규칙이 엄격합니다.

 

구분 HTML XML
목적 웹 페이지 데이터 표시 데이터 저장/교환
태그 정의 고정된 태그만 사용 가능 사용자 정의 태그 사용 가능
문법 규칙 느슨함(대소문자 구분 X, 태그 누락시 브라우저가 보완) 엄격함(대소문자 구문 O, 모든 태그를 닫아야함)
사용 사례 HTML 페이지 작성, 웹 프론트엔드 API 응답, 설정 파일, 데이터 교환

 

*[참고] html 자체는 고정된 태그만 사용 가능하지만, 자바스크립트의 웹 컴포넌트 API를 활용하면 사용자 정의 태그를 만들 수 있다. (CustomElements)

<!--HTML에서 사용자 정의 태그 사용-->
<newCustomElement></newCustomElement>

<!--JS-->
<script>
	class NewCustomElement extends HTMLElement { //커스텀 태그의 동작을 정의하는 클래스
    	connectedCallback() {
        	this.innerHTML = `<p>Hello!</p>`;
        }
    }
    
    customElements.define("newCustomElement", NewCustomElement); //사용자 정의 태그 등록 
</script>

 

 

 

JSON과 XML 차이점 비교

JSON은 JavaScript의 객체 구조를 그대로 사용하기 때문에 JavaScript와의 호환성이 뛰어납니다. 또한, 태그 사용이 없는 구조로 XML보다 가볍고, 네트워크 비용 절감에 유리하여 RESTful API 등에서 널리 사용됩니다.

반면, XML은 JavaScript Object로 변환하기 위해서 외부 라이브러리를 사용해야하기 때문에 상대적으로 더 복잡합니다.

하지만 문법이 엄격하고 구조화에 강점이 있어 신뢰성이 요구되는 데이터 송수신, 설정 파일, 문서 표준(ex)PPTX) 등에 사용됩니다.

 

 

'Dev' 카테고리의 다른 글

[데이터 교환 형식] JSON의 직렬화와 역직렬화  (0) 2025.04.05