XML (Extensible Markup Language)이란?

김동건·2024년 12월 20일
0

XML은 데이터를 구조화하고 교환하기 위한 마크업 언어로, 사람이 읽을 수 있으며 기계가 이해할 수 있는 형식으로 데이터를 표현한다. HTML과 비슷하게 태그 기반으로 데이터를 기술하지만, 사용자 정의 태그를 지원하며 데이터의 의미를 정의하는 데 초점을 맞춘다. (웹, Java 애플리케이션 설정 파일로서 사용이 많이 된다)

마크업(MarkUp)언어란?

마크업 언어는 "마크(Mark)"로 둘러싸인 언어로 "태크(Tag)"로 둘러싸였다고도 표현한다. HTML, XML 등의 마크업 언어들은 문서의 구조를 정의하고 쉽게 설명하면 문서의 골격에 해당하는 부분을 작성하는데 사용한다.

1. 특징

1) 데이터 저장 및 교환

  • XML은 플랫폼 간 데이터 교환을 위해 사용한다.
  • ex) 웹 서비스에서 서버와 클라이언트 간의 데이터를 전달

2). 유연한 구조

  • 태그를 사용자가 정의할 수 있어서 특정 데이터 요구에 맞게 설계가 가능하다.
  • ex) book, employee등등 이와 같은 태그들을 자유롭게 정의

3). 계층적 구조

  • 부모와 자식 관계를 통해 데이터의 계층적 관계를 나타낸다.
  • ex) root아래에서 여러 자식 태그가 포함

4). 쉬운 이해

  • 직관적이고 텍스트 기반이라 사람이 쉽게 이해가 가능

5). 플랫폼 독립성

  • 운영체제나 언어에 상관없이 데이터를 표현하고 교환 가능

2. 역할

데이터 저장

  • XML파일은 데이터를 저장하고 파일로 기록하는데 사용한다.

데이터 전송

  • 네트워크를 통해 데이터를 전송하는데 사용한다.
  • ex) 웹 서비스

구성 설정 파일

  • 시스템이나 어플리케이션의 설정 정보를 XML 형식으로 저장한다.
  • ex) Tomcat의 server.xml, Spring의 applicationContext.xml

문서 형식 정의

  • XML 스키마 또는 DTD로 XML 문서의 구조와 데이터를 검증 할수 있다.

3. 구조

1) 선언부

  • XML 문서의 첫번째 줄로, 문서의 버전과 인코딩 정보를 표시한다.
<?xml version="1.0" encoding="UTF-8"?>

2) 루트 요소 (root)

  • XML의 최상위 요소로 모든 데이터가 여기에 포함된다.
<root>
    ...
</root>

3) 요소 (Element)

  • 데이터를 포함하는 태그, 시작과 종료 태그로 구성된다.
<name>King-Dong-Gun</name>

4) 속성 (Attribute)

  • 요소의 추가 정보를 제공한다. key = "value"의 형식으로 작성
<book title="XML Study" author="King-Dong-Gun" />

5) 데이터 내용 (Content)

  • 요소 안에 포함된 실제 데이터 값
<name>King-Dong-Gun</name>

6) 주석

  • 문서의 가독성을 높이기 위한 설명
<!-- Hi Hello Bye GoodBye -->

4. 사용 예시

  • 도서 정보를 저장하고 표현
<?xml version="1.0" encoding="UTF-8"?>
<library>
    <!-- 루트 요소: 도서관 전체 -->
    <book id="1">
        <!-- 책 제목 -->
        <title>XML Fundamentals</title>
        <!-- 책 저자 -->
        <author>John Doe</author>
        <!-- 책 가격 및 통화 단위 -->
        <price currency="USD">29.99</price>
    </book>
    <book id="2">
        <!-- 두 번째 책 정보 -->
        <title>Advanced XML</title> <!-- 책 제목 -->
        <author>Jane Smith</author> <!-- 책 저자 -->
        <price currency="EUR">35.00</price> <!-- 책 가격 및 통화 단위 -->
    </book>
</library>
  • Java에서 DOM 파서로 XML을 읽고 데이터를 출력
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;

public class XMLParserExample {
    public static void main(String[] args) {
        try {
            // XML 파일 로드
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse("library.xml");

            // 루트 요소 가져오기
            Element root = doc.getDocumentElement();
            System.out.println("Root Element: " + root.getNodeName());

            // 모든 <book> 요소 가져오기
            NodeList bookList = doc.getElementsByTagName("book");
            for (int i = 0; i < bookList.getLength(); i++) {
                Element book = (Element) bookList.item(i);
                System.out.println("Book ID: " + book.getAttribute("id"));
                System.out.println("Title: " + book.getElementsByTagName("title").item(0).getTextContent());
                System.out.println("Author: " + book.getElementsByTagName("author").item(0).getTextContent());
                Element price = (Element) book.getElementsByTagName("price").item(0);
                System.out.println("Price: " + price.getTextContent() + " " + price.getAttribute("currency"));
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • 출력결과
Root Element: library
Book ID: 1
Title: XML Fundamentals
Author: John Doe
Price: 29.99 USD

Book ID: 2
Title: Advanced XML
Author: Jane Smith
Price: 35.00 EUR
profile
백엔드를 공부하고 있는 초보 개발자입니다.

1개의 댓글

comment-user-thumbnail
2025년 2월 4일

요새 누가 XML로 데이터 전송하나요? JSON 이면 main() 함수 코드 절반넘게 줄일꺼같은데 창조 손해 보시네요 ㅋㅋ

답글 달기

관련 채용 정보