본문 바로가기

Python

Python으로 XML 파일 만들기

320x100
320x100

 

1. 간단한 설명

 공부하던 중에 XML 파일을 만들어야하는 일이 생겨 알아보았다. 정의나 개념 같은 건 넘어가고 어떻게 구현하는 지만 정리해보고자 한다. Python에서는 XML을 표준 라이브러리로 지원하기 때문에 별도의 다운없이 바로 import해서 사용해주면 된다고 한다.

 

 

 주로 사용하는 함수와 사용법은 아래와 같다.

  1. Element( ) 함수로 root tag를 잡고, 거기에 SubElement( )로 하위 tag를 추가하는 방식으로 작성하면 된다.
    ( XML을 잘 몰라서 tag라는 용어로 쓰는 건지도 잘 모르겠다..)
  2. SubElement( ) 함수는 반환값으로 객체를 반환하기는 하는데 굳이 변수를 만들어서 받아주지 않아도 된다.
    하위 tag에 하위 tag를 또 추가하고 싶은 경우에만 반환값을 받아오면 된다. 
  3. ElmentTree( ) 함수는 작성한 XML 내용을 파일로 저장 할 때 사용해주면 된다.

 

2. 파이썬 코드

from xml.etree.ElementTree import Element, SubElement, ElementTree

filename = '01_manual'
width = 500
height = 500
point1 = (300, 400)
point2 = (250, 350)
label = 'cross'

root = Element('annotation')
SubElement(root, 'folder').text = 'custom_images'
SubElement(root, 'filename').text = filename + '.gif'
SubElement(root, 'path').text = './object_detection/images' +  filename + '.gif'
source = SubElement(root, 'source')
SubElement(source, 'database').text = 'Unknown'

size = SubElement(root, 'size')
SubElement(size, 'width').text = str(width)
SubElement(size, 'height').text = str(height)
SubElement(size, 'depth').text = '1'

SubElement(root, 'segmented').text = '0'

obj = SubElement(root, 'object')
SubElement(obj, 'name').text = label
SubElement(obj, 'pose').text = 'Unspecified'
SubElement(obj, 'truncated').text = '0'
SubElement(obj, 'difficult').text = '0'
bbox = SubElement(obj, 'bndbox')
SubElement(bbox, 'xmin').text = str(point1[0])
SubElement(bbox, 'ymin').text = str(point1[1])
SubElement(bbox, 'xmax').text = str(point2[0])
SubElement(bbox, 'ymax').text = str(point2[1])

tree = ElementTree(root)
tree.write('./' + filename +'.xml')​

 

 

3. 결과 XML File

 

 

< 참고 사이트 >

https://mystyle1057.tistory.com/entry/Python-XML-%EC%B2%98%EB%A6%AC

https://codeday.me/ko/qa/20190312/29697.html