일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 2유형
- K최근접이웃
- KNN
- QGIS설치
- ml 웹서빙
- 빅데이터분석기사
- 공간시각화
- 성능
- Ai
- 실기
- ㅂ
- GPU
- 공간분석
- streamlit
- 머신러닝
- fastapi
- 딥러닝
- qgis
- webserving
- dl
- 3유형
- CUDA
- 캐글
- gradio
- 예제소스
- DASH
- 인공지능
- pytorch
- 1유형
- Kaggle
Archives
- Today
- Total
에코프로.AI
[Python] XML 데이터 처리관련 본문

XML 데이터
XML이란?
- XML(eXtensible Markup Language)는 데이터를 구조화하고 저장하기 위한 마크업 언어
- 데이터 교환에 대한 표준
- HTML과 유사하지만, 데이터의 표현에 중점을 두고 있음
- 특징
- 유연성
- 사용자 정의 태그를 사용하여 데이터를 표현할 수 있음
- 가독성
- 사람이 읽고 쓸 수 있는 형태로 데이터를 표현
- 데이터 교환
- 다양한 시스템 간에 데이터 교환을 용이하게 함
- 유연성
XML의 구조와 문법
- XML의 주요 요소
- 루트 엘리먼트 : 모든 XML 문서에는 단 하나의 루트 앨리먼트가 있어야 함.
- 자식 엘리먼트 : 루트 엘리먼트 내에 포함된 엘리먼트
- 텍스트 노드 : 엘리먼트 내의 텍스트
XML 데이터 읽기/쓰기
- sample.xml
<?xml version="1.0" encoding="utf-8"?>
<customers>
<customer>
<name>홍길동</name>
<address>서울 강남구</address>
</customer>
<customer>
<name>고길동</name>
<address>서울 강북구</address>
</customer>
<customer>
<name>김길동</name>
<address>서울 서초구</address>
</customer>
</customers>
파이썬 표준 라이브러리 xml 모듈
import xml.etree.ElementTree as ET
- 검색하기
- find(path)
- 첫 번째 요소반환
- findall(path)
- 모든 요소 반환
- findtext(path)
- 첫 번째 요소의 텍스트 반환
- path 스트링
- ./name
- 현재 노드의 바로 아래 자식 중에서 'name' 검색
- .//name
- 현재 노드의 모든 하위 경로에서 'name' 검색
- ./name
- find(path)
- string 으로부터 XML 데이터 읽기
root = ET.fromstring(xml_data)
print(ET.tostring(root, encoding='utf-8').decode('utf-8'))
root = ET.fromstring(xml_data)
print(f'루트 엘리먼트 : {root.tag}')
for child in root:
print(child.tag)
for item in child:
print(f'{item.tag} : {item.text}')
- XML 파일로부터 데이터 읽기
tree = ET.parse('sample.xml')
root = tree.getroot()
print(f'루트 엘리먼트 : {root.tag}')
for child in root:
print(child.tag)
for item in child:
print(f'{item.tag} : {item.text}')
- XML 파일 저장하기
root = ET.Element('customers')
customer = ET.SubElement(root, 'customer')
name = ET.SubElement(customer, 'name')
name.text = '홍길동'
address = ET.SubElement(customer, 'address')
address.text = '서울 강남구'
customer = ET.SubElement(root, 'customer')
name = ET.SubElement(customer, 'name')
name.text = '고길동'
address = ET.SubElement(customer, 'address')
address.text = '서울 강북구'
tree = ET.ElementTree(root)
tree.write('output.xml', encoding='utf-8', xml_declaration=True)
lxml라이브러리
- 매우 빠른 파싱 속도를 제공하고, 대규모 XML 문서처리에 적합
- 설치
pip install lxml
- 라이브러리 불러오기
from lxml import etree
- 문자열로 부터 데이터 읽기
from lxml import etree
root = etree.fromstring(xml_data)
print(f'루트 엘리먼트 : {root.tag}')
for child in root:
print(child.tag)
for item in child:
print(f'{item.tag} : {item.text}')
- 파일로부터 XML파일 읽기
tree = etree.parse('sample.xml')
root = tree.getroot()
print(f'루트 엘리먼트 : {root.tag}')
for child in root:
print(child.tag)
for item in child:
print(f'{item.tag} : {item.text}')
name = root.find('.//name')
print(name)
print(f'{name.tag}:{name.text}')
name2 = root.findtext('.//name')
print(name2)
names = root.findall('.//name')
print(names)
print('len : ', len(names))
for name in names:
print(type(name))
print(f'{name.tag}:{name.text}')
- XML 파일에 쓰기
new_customer = etree.Element('customer')
name = etree.SubElement(new_customer, 'name')
name.text = '고길동'
address = etree.SubElement(new_customer, 'address')
address.text = '서울 강북구'
root.append(new_customer)
tree.write('modified_sample.xml', encoding='UTF-8', xml_declaration=True)
'AI Tutorial' 카테고리의 다른 글
[Python] Requests 라이브러리 소개 및 활용(Feat. xml) (0) | 2024.08.20 |
---|---|
[Python] Requests 라이브러리 소개 및 활용(Feat. json) (0) | 2024.08.18 |
[머신러닝] KNN(K-최근접 이웃) 알고리즘 구현 (0) | 2024.08.13 |
PostgreSQL 설치 및 데이터 저장 (Feat. Python) (0) | 2024.07.31 |
구글 코랩(Colab) - 사용법 (0) | 2024.07.08 |