ElementTree 정리 및 사용법 XML

파이썬 XML ElementTree

ElementTree는 파이썬에서 2.5? 버전부터 내부라이브러리 포함되어
따로 설치 않아도 됩니다.

XML을 다룰때 많이 사용되며
사용법도 간단합니다.

공식 문서는 https://docs.python.org/2/library/xml.etree.elementtree.html

아래는 샘플 코드입니다.

 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
31
32
33
34
35
36
import xml.etree.ElementTree as ET  

xml = """<?xml version = "1.0" encoding = "UTF-8" ?> 
<root> 
    <sub rank="1" id="apple" price="120" u="up">애플
        <desc name="ipod">아이팟</desc>
        <desc name="phone">아이폰</desc>       
    </sub>
    <sub rank="2" id="tsla" price="820" u="up">테슬라</sub>
    <sub rank="3" id="msft" price="233" u="down">마소</sub>
</root>
"""

r = ET.fromstring(xml)
print("=========root 하위 find사용 직접 꺼내기=========")
print(r.find('sub').get('rank'))
print(r.find('sub')[0].get('name'))
print(r.find('sub')[1].text)
print(r[0].text)


print("=========root 하위 get 직접꺼내기=========")
print(r[1].get("rank"))
print(r[1].get("id"))
print(r[1].get("price"))
print(r[1].text)


print("=========root 하위 get 반복문=========")
for tag in r:
    print(tag.get("rank"))
    print(tag.get("id"))
    print(tag.get("price"))
    print(tag.text)
    if len(tag) > 0:
        print(",".join(v.get("name") for v in tag))

결과: =========root 하위 find사용 직접 꺼내기=========
1
ipod
아이폰
애플

=========root 하위 get 직접꺼내기=========
2
tsla
820
테슬라
=========root 하위 get 반복문========= 1
apple
120
애플

ipod,phone
2
tsla
820
테슬라
3
msft
233
마소



find 와 get

기능 설명
find() 태그를 찾을 때
get() 속성을 찾을 때 ※상위 태그와 상관없이 속성명으로 바로 찾을 수 있습니다.
text 태그사이의 문자열을 출력합니다.

위 소스에서 r은 () 전체를 가지고 있습니다.
r.find('sub')는 root>sub 태그 전체를 가져옵니다.(3개))
r.find('sub').get('rank')는 sub 태그 전체 중 첫번째 rank를 가져옵니다.


위 소스에서 get(), find()를 이해한다면
데이터를 가져오는데 큰 어려움은 없을거 같습니다.^^


TAG: #ElementTree #ET #xml