본문 바로가기
Aiffel/Fundamental

XML 파일

by EDGE-AI 2021. 12. 29.

  1. XML은 다목적 마크업 언어(Extensible Markup Language)이다
  2. 마크업 언어는 태그로 이루어진 언어를 말하며, 상위태그 - 하위태그의 계층적 구조로 이루어져 있다.
  3. XML은 요소(Element)들로 이루어져 있다.
  4. 요소는 <열린 태그> 내용 </닫힌 태그>가 기본적인 구조이며, 속성 값을 가질 수 있다.

 

XML 파일 만들기

  • ElementTree : 파이썬 표준 라이브러리로서 XML관련 기능 제공
    • Element() : 태그 생성
    • SubElement() : 자식 태그 생성
    • tag : 태그 이름
    • text : 텍스트 내용 생성
    • attrib : 속성 생성
  • dump() : 생성된 XML 요소 구조를 시스템에 사용
import xml.etree.ElementTree as ET

person = ET.Element("Person")
name = ET.Element("Name")
name.text = '강민'
person.append(name)

age = ET.Element("age")
age.text = "29"
person.append(age)

ET.SubElement(person, 'place').text = '강남'

ET.dump(person)

>> <Person><name>강민</name><age>28</age><place>강남</place></Person>
 

속성 값 및 태그명 변경 가능

person.attrib['id'] = '0x0001'
name.tag = 'firstname'
ET.dump(person)

>> <Person id="0x0001"><firstname>강민</firstname><age>28</age><place>강남</place></Person>

 

새로운 태그 삽입, 속성 추가

lastname.text = '어'
person.insert(1, lastname)
ET.dump(person)

>> <Person id="0x0001"><firstname>강민</firstname><lastname date="2020-02-21">어</lastname><lastname date="2020-03-20">아</lastname><age>28</age><place>강남</place></Person>lastname = ET.Element('lastname', date = '2020-02-21')
 

 

추가 기능

# 삭제
person.remove(age)

# 저장
ET.ElementTree(person).write('person.xml')

 

XML 파싱하기

파싱(parsing, 구문 분석) : 어떤 문자열을 의미있는 토큰으로 분해해, 문법적 의미와 구조를 반영한 파스트리(parse tree)를 만드는 과정

from bs4 import BeautifulSoup
import os

path = os.getenv("HOME") + "/home/ftext/data/books.xml"  
with open(path, "r", encoding='utf8') as f:
    booksxml = f.read() 
 
soup = BeautifulSoup(booksxml,'lxml') 
#- BeautifulSoup 객체 생성 : lxml parser를 이용해 데이터 분석

for title in soup.find_all('title'): 
#-  태그를 찾는 find_all 함수 이용
    print(title.get_text())

'Aiffel > Fundamental' 카테고리의 다른 글

파이썬의 특징  (0) 2021.12.30
JSON 파일  (0) 2021.12.29
파이썬 모듈 및 패키지 개념 정리  (0) 2021.12.29
정규표현식  (0) 2021.12.29
Markdown 작성하기  (0) 2021.12.28

댓글