[XML] XML(eXtensible Markup Language)

JAsmine_log·2025년 2월 20일

XML(eXtensible Markup Language)

XML은 다양한 종류의 데이터를 구조화하여 저장하고 전송하기 위한 마크업 언어다. 1998년에 W3C에서 발표되었으며, 데이터를 텍스트 형식으로 표현하여 사람과 기계 모두가 읽고 이해하기 쉽게 만들어다.

특징:

  • 확장성 (Extensible)

    • 사용자가 직접 태그를 정의할 수 있다
    • 새로운 태그를 추가하거나 수정이 자유롭다
  • 자기 서술적 (Self-descriptive)

    • 데이터의 의미를 태그 자체에서 파악할 수 있다
    • 별도의 문서 없이도 데이터의 구조를 이해할 수 있다
  • 계층적 구조

    • 트리 구조로 데이터를 표현한다
    • 부모-자식 관계를 명확하게 표현할 수 있다
  • 플랫폼 독립적

    • 특정 플랫폼에 종속되지 않는다
    • 다양한 시스템 간의 데이터 교환이 용이하다
<?xml version="1.0" encoding="UTF-8"?>
<도서관>
  <>
    <제목>해리포터와 마법사의 돌</제목>
    <저자>J.K. 롤링</저자>
    <출판년도>1997</출판년도>
    <장르>판타지</장르>
    </>
  <>
    <제목>반지의 제왕</제목>
    <저자>J.R.R. 톨킨</저자>
    <출판년도>1954</출판년도>
    <장르>판타지</장르>
    </>
  </도서관>

사용 예제

import xml.etree.ElementTree as ET

# 도서 관리 시스템 예제
class BookManager:
    def __init__(self, filename):
        self.filename = filename
        try:
            self.tree = ET.parse(filename)
            self.root = self.tree.getroot()
        except FileNotFoundError:
            self.root = ET.Element('도서관')
            self.tree = ET.ElementTree(self.root)

    def add_book(self, title, author, year, genre):
        book = ET.SubElement(self.root, '책')
        
        title_elem = ET.SubElement(book, '제목')
        title_elem.text = title
        
        author_elem = ET.SubElement(book, '저자')
        author_elem.text = author
        
        year_elem = ET.SubElement(book, '출판년도')
        year_elem.text = str(year)
        
        genre_elem = ET.SubElement(book, '장르')
        genre_elem.text = genre
        
        self.save()

    def save(self):
        self.tree.write(self.filename, encoding='utf-8', xml_declaration=True)

    def get_all_books(self):
        books = []
        for book in self.root.findall('책'):
            books.append({
                '제목': book.find('제목').text,
                '저자': book.find('저자').text,
                '출판년도': book.find('출판년도').text,
                '장르': book.find('장르').text
            })
        return books

# 사용 예제
manager = BookManager('도서관.xml')
manager.add_book('파이썬 완벽 가이드', '홍길동', 2024, '프로그래밍')
books = manager.get_all_books()
for book in books:
    print(book)
profile
Everyday Research & Development

0개의 댓글