Nacho

[SSAFY] XML 본문

Java

[SSAFY] XML

Nacho_13 2025. 1. 19. 12:36
반응형

**필기를 바탕으로 GPT가 작성한 글입니다.**

XML의 개념과 특징: 데이터 구조와 전송의 강력한 도구

XML(Extensible Markup Language)은 데이터를 구조화하고 표현하기 위해 설계된 마크업 언어로, 다양한 분야에서 널리 사용되고 있습니다. 이 글에서는 XML의 발전 과정, 주요 특징, 다른 기술과의 비교, 그리고 XML 파싱 방식에 대해 알아보겠습니다. 이를 통해 XML이 왜 여전히 중요한 데이터 형식으로 자리 잡고 있는지 이해할 수 있을 것입니다.


1. XML의 역사: GML → SGML → HTML → XML

XML은 IBM의 GML(Generalized Markup Language)에서 시작된 마크업 언어 발전의 결과물입니다.

1) GML (Generalized Markup Language)

  • IBM에서 개발된 초기 마크업 언어로, 데이터를 구조화하기 위한 기초적인 도구.
  • 이후 등장한 SGML의 기반이 되었습니다.

2) SGML (Standard Generalized Markup Language)

  • GML을 확장하여 ISO 표준화된 언어.
  • 매우 유연하고 강력하지만, 복잡하고 무거운 설계로 인해 실무 사용이 어려웠습니다.

3) HTML (HyperText Markup Language)

  • SGML의 하위 집합(subset)으로 웹 문서 표시를 위해 설계.
  • 단순하고 사용하기 쉬운 구조 덕분에 웹에서 급격히 확산.
  • HTML5로 발전하며 멀티미디어 콘텐츠와 현대적 웹 애플리케이션을 지원.

4) XML (Extensible Markup Language)

  • SGML의 복잡성을 단순화하고 데이터 정의 및 전송을 목적으로 설계된 언어.
  • HTML과는 달리 데이터를 표현하고 저장하기 위한 유연한 구조를 제공합니다.

2. XML의 주요 특징

XML은 데이터를 저장하고 전송하는 강력한 도구로, 다음과 같은 특징을 가지고 있습니다.

1) 트리(Tree) 구조 기반

  • XML 문서는 루트 노드, 부모 노드, 자식 노드로 구성된 계층적 트리 구조를 가집니다.
  • 데이터를 체계적으로 표현하고 관계를 명확히 나타냅니다.

2) 텍스트 기반

  • 사람과 기계 모두 읽기 쉬운 텍스트 형식으로 데이터를 표현.
  • 플랫폼 독립적이며 다양한 환경에서 처리 가능.

3) 확장성

  • 사용자가 필요에 따라 맞춤형 태그를 정의할 수 있어, 다양한 목적의 데이터 표현이 가능합니다.

4) 다양한 응용 분야

  • Voice XML: 음성 인터페이스.
  • MathML: 수학 방정식 표현.
  • SOAP: 웹 서비스 통신.
  • RSS/Atom: 뉴스 피드 및 업데이트 제공.

5) 플랫폼 독립성

  • 다양한 운영체제와 플랫폼에서 동일한 방식으로 데이터를 저장하고 처리.

3. HTML과 XML의 비교

특성 HTML XML
목적 문서의 표현 및 렌더링 데이터의 정의 및 전송
태그 사용 미리 정의된 태그만 사용 가능 사용자 정의 태그 허용
구조 강제성 느슨한 구조 (닫는 태그 생략 가능) 엄격한 구조 (모든 태그 닫아야 함)
가독성 주로 브라우저에서 사람이 읽음 기계와 사람이 모두 읽음

4. DTD와 XML Schema: 구조와 유효성 검증

XML 문서의 구조를 정의하고 유효성을 검증하기 위해 DTD(Document Type Definition)XML Schema를 사용합니다.

1) DTD (Document Type Definition)

역할:

  • XML 문서의 구조와 규칙을 정의합니다.
  • 태그, 속성, 요소 간의 관계를 규정하여 문서의 일관성을 보장.

특징:

  • 문자열 기반으로 설계되어 단순하지만 제한적.
  • XML Schema 등장 이전에 주로 사용되었습니다.

2) XML Schema

역할:

  • DTD를 대체하는 강력하고 유연한 데이터 구조 정의 도구.
  • 숫자, 날짜 등 데이터 타입을 명시적으로 정의 가능.
  • 네임스페이스(namespace)를 지원해 태그 충돌을 방지.

XML Schema의 장점:

  • 데이터의 구조를 더 정밀하게 정의 가능.
  • JSON Schema와 비슷한 역할을 수행.

5. XML 문서의 조건: Well-formed vs Valid XML

XML 문서는 반드시 Well-formed XML 조건을 충족해야 하며, 선택적으로 Valid XML 규칙을 따를 수 있습니다.

1) Well-formed XML (필수 조건)

  • 문법적으로 올바른 XML을 의미하며, 다음 규칙을 따라야 합니다.
    1. 태그는 반드시 시작 태그종료 태그가 있어야 함.
    2. 태그의 중첩 순서가 올바르게 유지되어야 함.
    3. 태그와 속성은 대소문자를 구분해야 함.
    4. 루트 태그는 반드시 하나만 존재해야 함.

2) Valid XML (선택 조건)

  • DTD 또는 XML Schema를 사용해 구조와 데이터 타입이 정의된 XML.
  • Valid XMLWell-formed XML 조건을 충족하면서, 추가적으로 DTD나 XML Schema의 규칙에 적합해야 합니다.

6. XML과 JSON 비교

XML과 JSON은 데이터를 전송하고 저장하기 위한 대표적인 형식입니다. 각 형식의 특징은 다음과 같습니다.

특징 XML JSON
구조 트리 구조 기반 키-값 쌍 기반
가독성 복잡할 수 있음 간결하고 가독성 높음
데이터 타입 문자열 기반 (Schema 필요) 기본적으로 숫자, 문자열, 배열 지원
확장성 태그를 자유롭게 정의 가능 제한적
주요 용도 문서 및 데이터 표현 데이터 교환

7. XML 파싱 방식: DOM, SAX, StAX

XML을 처리하기 위해 DOM, SAX, StAX와 같은 파싱 방식이 사용됩니다.

1) DOM (Document Object Model)

특징:

  • XML 문서를 트리 구조로 메모리에 로드하여 조작 가능.
  • 문서의 임의 위치에 자유롭게 접근 가능.

단점:

  • 대규모 문서를 처리할 경우 메모리 사용량이 많음.

2) SAX (Simple API for XML)

특징:

  • 이벤트 기반 파싱으로 메모리 사용이 적음.
  • 순차적으로 XML 데이터를 처리하며, 임의 위치로 이동 불가.

단점:

  • 문서를 동적으로 수정하거나 조작하기 어려움.

3) StAX (Streaming API for XML)

특징:

  • SAX의 이벤트 기반 방식과 유사하지만, 개발자가 데이터 처리 흐름을 제어 가능.
  • Pull 방식으로 필요할 때 데이터를 가져옵니다.

DOM vs SAX 비교

특성 DOM SAX
메모리 사용 문서 전체를 메모리에 로드 필요할 때만 데이터를 처리
속도 문서 크기에 따라 속도가 느려질 수 있음 문서 크기와 관계없이 빠름
조작 가능성 문서를 동적으로 조작 가능 읽기 전용, 조작 불가
API 난이도 상대적으로 간단 이벤트 기반으로 구현이 복잡

XML은 유연성과 확장성을 바탕으로 데이터를 정의, 저장, 전송하는 강력한 도구입니다.
DTD와 XML Schema를 통해 문서의 구조와 유효성을 보장하며, DOM, SAX, StAX와 같은 다양한 파싱 방식을 활용하여 XML 데이터를 처리할 수 있습니다.

JSON과의 비교에서 XML은 다소 무겁지만, 복잡한 데이터 표현과 문서화에는 여전히 뛰어난 장점을 제공합니다. XML을 올바르게 활용하면 더 효율적인 데이터 전송 및 관리를 실현할 수 있습니다.

반응형