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)