programming/Scripts
parsing xml
Jacob_baek
2013. 7. 12. 16:11
python 에서는 다음과 같은 XML을 지원한다.
SAX, DOM, ElementTree 과 같은 방식이 존재한다.
이중 ElementTree 가 python에 적합하게 구현된 방식이다.
lower 2.5 (minidom)
from xml.dom import minidom xmldoc = minidom.parse('sample.xml')
참고사이트
- http://wiki.python.org/moin/MiniDom
over 2.5 (ElementTree)
from xml.etree.ElementTree as ET # import elementtree.ElementTree as ET tree = ET.parse('sample.xml') root = tree.getroot() rootTagName = root.tag # tag : tag name, text : , attrib : 속성 값 rootNumber = int(root.attrib['number']) # print all data for elem in root: print elem.tag, elem.text, elem.attrib # modify data for parent in root.getiterator('data'): parent.text = 'test' for elem in root: if elem.tag == 'step1': for st in elem.getiterator('step2'): st.text = 5 # append data ''' element 추가의 경우 개행문자(carriage return)를 써서 표현되지 않고 여백(white space)로 표현된다. 이를 개행문자를 사용하여 표현하고자 하면 다음과 같은 트릭을 사용해야 한다. -> prettyprint(맨 아래 링크 참고) 또한 추가후 write 해주어야 한다. ''' sube = SubElement(root, 'test_sub') sube.text = 'text_data_input' test_elem = Element('test_elem') root.append(test_elem) # delete data
prettyprint : http://effbot.org/zone/element-lib.htm#prettyprint
참고사이트
- http://drumcoder.co.uk/blog/2010/jun/17/using-elementtree-python/
- http://coreapython.hosting.paran.com/manual/elementTree.htm