파이썬 XML 구문 분석: 종합 가이드
XML(확장 가능한 마크업 언어)은 데이터를 저장하고 전송하는 데 널리 사용되는 언어입니다. Python은 XML 구문 분석을 위한 여러 라이브러리를 제공합니다. 이 가이드에서는 XML 구문 분석을 위한 두 가지 기본 제공 Python 라이브러리인 xml.dom.minidom과 xml.etree.ElementTree에 대해 소개합니다.
1단계: xml.dom.minidom을 사용한 XML 구문 분석
xml.dom.minidom 라이브러리를 사용하면 Python으로 XML 문서를 구문 분석할 수 있습니다. XML 문자열을 구문 분석하려면 parseString 메서드를 사용합니다:
from xml.dom.minidom import parseString
xml_string = """
<library>
<book>
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
</library>
"""
document = parseString(xml_string)
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)
위의 코드에서는 XML 문자열을 구문 분석하여 책 제목을 추출합니다.
2단계: xml.etree.ElementTree를 사용한 XML 구문 분석
xml.etree.ElementTree(ET) 라이브러리는 XML을 구문 분석하는 보다 파이썬적인 방법을 제공합니다. XML 문자열을 구문 분석하려면 fromstring 메서드를 사용합니다:
import xml.etree.ElementTree as ET
xml_string = """
<library>
<book>
<title>The Great Gatsby</title>
<author>F. Scott Fitzgerald</author>
<year>1925</year>
</book>
</library>
"""
root = ET.fromstring(xml_string)
for child in root.iter():
if child.text.strip():
print(child.text)
위의 코드에서는 XML 문자열을 구문 분석하고 각 요소의 텍스트를 인쇄합니다.
3단계: XML 파일 구문 분석
미니돔과 엘리먼트트리는 모두 구문 분석 메서드를 사용하여 파일에서 XML을 구문 분석할 수 있습니다:
# Using minidom
from xml.dom.minidom import parse
document = parse("sample.xml")
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)
# Using ElementTree
import xml.etree.ElementTree as ET
root = ET.parse("sample.xml")
for child in root.iter():
if child.text.strip():
print(child.text)
위의 코드는 XML 파일을 구문 분석하고 일부 요소를 인쇄하는 방법을 보여줍니다.
4단계: XML 데이터를 CSV 파일로 저장하기
XML을 구문 분석한 후 pandas 라이브러리를 사용하여 데이터를 CSV 파일로 저장할 수 있습니다:
import pandas as pd
parsed_dict = {
"title": ["The Great Gatsby"],
"author": ["F. Scott Fitzgerald"],
"year": [1925]
}
df = pd.DataFrame(parsed_dict)
df.to_csv("parsed_xml_data.csv", index=False)
5단계: 잘못된 XML 처리
Beautiful Soup 라이브러리는 오류가 있을 수 있는 XML 문서를 구문 분석할 수 있습니다:
from bs4 import BeautifulSoup
invalid_xml = """
<root>
<person>
<name>John Doe</name>
<message>This is a message & an invalid XML example.</message>
</person>
</root>
"""
soup = BeautifulSoup(invalid_xml, features="lxml-xml")
print(soup.prettify())
Beautiful Soup은 유효하지 않은 XML을 처리할 수 있지만 다른 XML 구문 분석 라이브러리보다 속도가 느립니다.
댓글 (0)
여기에는 아직 댓글이 없습니다. 첫 번째 댓글이 되실 수 있습니다!