[파이썬] Beautiful Soup 4 비정렬된 XML 문서 다루기

XML (Extensible Markup Language)은 데이터를 저장하고 전송하기 위한 마크업 언어입니다. XML 데이터를 파싱하고 다루기 위해 BeautifulSoup라는 파이썬 라이브러리를 사용할 수 있습니다. BeautifulSoup 4는 비정렬된 XML 문서를 간편하게 다루는 강력한 도구입니다.

이 글에서는 BeautifulSoup 4를 사용하여 비정렬된 XML 문서를 다루는 방법에 대해 알아보겠습니다.

BeautifulSoup 4 설치하기

BeautifulSoup 4를 사용하기 위해서는 먼저 라이브러리를 설치해야 합니다. 아래의 명령을 사용하여 설치할 수 있습니다.

pip install beautifulsoup4

XML 파싱하기

먼저, Beautiful Soup 4를 사용하여 XML 문서를 파싱하는 방법을 알아보겠습니다. 아래의 코드는 XML 문자열을 파싱하여 BeautifulSoup 객체를 생성하는 예제입니다.

from bs4 import BeautifulSoup

xml_string = '''
<root>
    <person>
        <name>John</name>
        <age>30</age>
    </person>
    <person>
        <name>Jane</name>
        <age>25</age>
    </person>
</root>
'''

soup = BeautifulSoup(xml_string, 'xml')

위의 코드에서 xml을 BeautifulSoup 생성자의 두 번째 인자로 전달함으로써 Beautiful Soup 4에게 XML 형식임을 알려줍니다. BeautifulSoup 객체는 XML 문서의 구조를 유지한 상태로 생성됩니다.

XML 요소 접근하기

Beautiful Soup 4를 사용하면 XML 문서의 요소에 간편하게 접근할 수 있습니다. 다음은 XML 문서에서 name 요소를 가져오는 예제입니다.

name_element = soup.find('name')
print(name_element.text)

위의 예제에서 find 메서드를 사용하여 name 요소를 찾고, text 속성을 사용하여 요소의 내용을 가져옵니다.

XML 요소 수정하기

Beautiful Soup 4를 사용하면 XML 문서의 요소를 손쉽게 수정할 수 있습니다. 다음은 age 요소의 내용을 수정하는 예제입니다.

age_element = soup.find('age')
age_element.string = '35'
print(age_element)

위의 코드에서 string 속성을 사용하여 age 요소의 내용을 '35'로 변경합니다. 변경된 요소는 print 함수를 사용하여 출력됩니다.

XML 문서 생성하기

Beautiful Soup 4를 사용하여 XML 문서도 생성할 수 있습니다. 다음은 새로운 person 요소를 생성하는 예제입니다.

new_person = soup.new_tag('person')
new_name = soup.new_tag('name')
new_age = soup.new_tag('age')

new_name.string = 'Mike'
new_age.string = '40'

new_person.append(new_name)
new_person.append(new_age)

root_element = soup.find('root')
root_element.append(new_person)

print(root_element)

위의 예제에서 new_tag 메서드를 사용하여 새로운 요소들을 생성하고, string 속성을 사용하여 내용을 설정합니다. 그리고 append 메서드를 사용하여 요소들을 적절한 위치에 추가합니다.

결론

Beautiful Soup 4를 사용하면 비정렬된 XML 문서를 파싱하고 다루는 작업이 간단해집니다. 이 글에서는 BeautifulSoup 4를 사용하여 XML 문서를 파싱하고 요소에 접근하며, 수정하고 생성하는 방법을 알아보았습니다.

Beautiful Soup 4는 파이썬에서 XML 데이터를 다루기 위한 강력하고 유연한 도구이므로, XML 데이터를 처리해야 하는 경우 추천합니다.