XML을 처리 하는 파이썬 라이브러리중 ElementTree에 대해 알아보자. ( http://effbot.org/zone/element.htm )
ElementTree 모듈을 추가한다.
ElementTree 모듈을 추가한다.
from xml.etree.ElementTree import *
Element 생성시, 직접 attribute를 추가
note = Element("note")
memo = Element("memo", date='20140202')
memo = Element("memo", date='20140202')
SubElement
는 태그명과 태그의 텍스트값을 한번에 설정할 수 있다.
태그에 어트리뷰트 추가할수 있다.
note.attrib['time'] = '20140101'
[root@master python]# cat sampleXml.py
#coding=utf8
태그에 어트리뷰트 추가할수 있다.
note.attrib['time'] = '20140101'
[root@master python]# cat sampleXml.py
#coding=utf8
from xml.etree.ElementTree import *
import time
import sampleIndent
class SampleEtree():
def basic(self):
## Element를 이용해, 태그를 만들수 있고,
import sampleIndent
class SampleEtree():
def basic(self):
## Element를 이용해, 태그를 만들수 있고,
태그에 텍스트값을 추가
note = Element("note")
to = Element("to")
to = Element("to")
to.text = "Tove"
note.append(to)
dump(note)
def basic_SubElement(self):
note = Element("note")
to = Element("to")
to.text = "Tove"
note.append(to)
## SubElement는 태그명과 태그의 텍스트값을 한번에 설정
dump(note)
def basic_SubElement(self):
note = Element("note")
to = Element("to")
to.text = "Tove"
note.append(to)
## SubElement는 태그명과 태그의 텍스트값을 한번에 설정
SubElement(note, "from").text = "Catherine"
## note 태그에 attribute 추가
note.attrib['time'] = '20140101'
dump(note)
## Element 생성시, 직접 attribute를 추가
note.attrib['time'] = '20140101'
dump(note)
## Element 생성시, 직접 attribute를 추가
memo = Element("memo", date='20140202')
SubElement(memo, 'title').text = "use to xml"
dump(memo)
def basic_insert_tag(self):
note = Element("note")
to = Element("to")
to.text = "Tove"
note.append(to)
## dummy라는 element를 note element에 추가
dummy = Element("dummy")
note.insert(1, dummy)
dump(note)
## dummy라는 element를 note element에 삭제
note.remove(dummy)
dump(note)
def test(self):
note = Element("note", date='20120104')
SubElement(note, 'to').text = "Tove"
SubElement(note, 'from').text = "Jani"
SubElement(note, 'heading').text = "Reminder"
SubElement(note, 'body').text = "Don't forget me this weekend!"
## sampleIndent 모듈에 indent함수
sampleIndent.indent(note)
dump(note)
def main():
x = SampleEtree()
x.test()
#x.basic()
#x.basic_SubElement()
#x.basic_insert_tag()
main()
sampleIndent 모듈에 indent함수
사용자가 직접 만든 모듈 추가
import sampleIndent
단 sampleIndent.py은 동일한 디렉터리에 있어야 한다.
다른 경우. sys.path.append("directory") 로 추가 한후 모듈을 사용할 수 있다.
호출 : sampleIndent.indent(note)
[root@master python]# vim sampleIndent.py
def indent(elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
참고
* https://wikidocs.net/42
sample로 만든, SampleEtree 클래스를 상속받는 makeXml이라는 클래스를 만들자.
그리고 make 라는 함수를 만들어, xml을 만들자.
dump(memo)
def basic_insert_tag(self):
note = Element("note")
to = Element("to")
to.text = "Tove"
note.append(to)
## dummy라는 element를 note element에 추가
dummy = Element("dummy")
note.insert(1, dummy)
dump(note)
## dummy라는 element를 note element에 삭제
note.remove(dummy)
dump(note)
def test(self):
note = Element("note", date='20120104')
SubElement(note, 'to').text = "Tove"
SubElement(note, 'from').text = "Jani"
SubElement(note, 'heading').text = "Reminder"
SubElement(note, 'body').text = "Don't forget me this weekend!"
## sampleIndent 모듈에 indent함수
sampleIndent.indent(note)
dump(note)
def main():
x = SampleEtree()
x.test()
#x.basic()
#x.basic_SubElement()
#x.basic_insert_tag()
main()
sampleIndent 모듈에 indent함수
사용자가 직접 만든 모듈 추가
import sampleIndent
단 sampleIndent.py은 동일한 디렉터리에 있어야 한다.
다른 경우. sys.path.append("directory") 로 추가 한후 모듈을 사용할 수 있다.
호출 : sampleIndent.indent(note)
[root@master python]# vim sampleIndent.py
def indent(elem, level=0):
i = "\n" + level*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for elem in elem:
indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = i
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = i
참고
* https://wikidocs.net/42
sample로 만든, SampleEtree 클래스를 상속받는 makeXml이라는 클래스를 만들자.
그리고 make 라는 함수를 만들어, xml을 만들자.
sampleXml 모듈을 추가 한다.
sampleXml 모듈에
SampleEtree 클래스를 상속받는 클래스
를 만든다.
ElementTree 모듈도 sampleXml 모듈안에서 추가된것 이기 때문에,
ElementTree 모듈도 sampleXml 모듈안에서 추가된것 이기 때문에,
sampleXml.Element
("note", date='20120104') 이렇게 사용해야 한다.
만들어진 blaMakeXml.xml 파일을 브라우저 에서 열어보자. ( http://10.2.2.3/sample/blaMakeXml.xml )
#coding=utf8
만들어진 blaMakeXml.xml 파일을 브라우저 에서 열어보자. ( http://10.2.2.3/sample/blaMakeXml.xml )
#coding=utf8
import sampleXml
class makeXml(sampleXml.SampleEtree):
def __init__(self, filename):
self.filename = filename
def make(self):
note =
self.filename = filename
def make(self):
note =
sampleXml.Element
("note", date='20120104')
sampleXml.SubElement
(note, 'to').text = "Tove"
sampleXml.SubElement(note, 'from').text = "Jani"
sampleXml.SubElement(note, 'heading').text = "Reminder"
sampleXml.SubElement(note, 'body').text = "Don't forget me this weekend!"
# sampleIndent 모듈에 indent함수
sampleXml.sampleIndent.indent(note)
sampleXml.ElementTree(note).write(self.filename)
sampleXml.SubElement(note, 'from').text = "Jani"
sampleXml.SubElement(note, 'heading').text = "Reminder"
sampleXml.SubElement(note, 'body').text = "Don't forget me this weekend!"
# sampleIndent 모듈에 indent함수
sampleXml.sampleIndent.indent(note)
sampleXml.ElementTree(note).write(self.filename)
sampleXml.dump
(note)
def main():
a = sampleXml.SampleEtree()
a.basic()
x = makeXml('blaMakeXml.xml')
x.make()
if __name__ == "__main__":
main()
오우.. 재밌다 ㅎㅎ
def main():
a = sampleXml.SampleEtree()
a.basic()
x = makeXml('blaMakeXml.xml')
x.make()
if __name__ == "__main__":
main()
오우.. 재밌다 ㅎㅎ
'파이썬' 카테고리의 다른 글
multiprocessing : Process-based "threading" inteface (0) | 2015.11.10 |
---|---|
XML문서 파싱하고, 검색하는 방법에 대해 알아보자. (0) | 2015.11.10 |
시스템 명령행 인자와 파일다루기 예제(간단한 메모장 만들기) (0) | 2015.11.10 |
파이썬 Queue - a aynchronized queue class (0) | 2015.11.10 |
파이썬에서의 쓰레드 (0) | 2015.11.10 |