Python 이 사전 을 XML 로 변환 하 는 방법

문제.
파 이 썬 사전 을 사용 하여 데 이 터 를 저장 하고 XML 형식 으로 변환 하고 싶 습 니 다.
해결 방안xml.etree.ElementTree 라 이브 러 리 는 일반적으로 분석 작업 에 사용 되 지만 XML 문 서 를 만 들 수 있 습 니 다.예 를 들 어 다음 과 같은 함 수 를 고려 합 니 다.

from xml.etree.ElementTree import Element

def dict_to_xml(tag, d):
'''
Turn a simple dict of key/value pairs into XML
'''
elem = Element(tag)
for key, val in d.items():
  child = Element(key)
  child.text = str(val)
  elem.append(child)
return elem
다음은 사용 예 입 니 다.

>>> s = { 'name': 'GOOG', 'shares': 100, 'price':490.1 }
>>> e = dict_to_xml('stock', s)
>>> e
<Element 'stock' at 0x1004b64c8>
>>>
전환 결 과 는 하나의Element 인 스 턴 스 입 니 다.I/O 작업 에 있어 서xml.etree.ElementTree tostring() 함 수 를 사용 하면 바이트 문자열 로 쉽게 변환 할 수 있 습 니 다.예 를 들 면:

>>> from xml.etree.ElementTree import tostring
>>> tostring(e)
b'<stock><price>490.1</price><shares>100</shares><name>GOOG</name></stock>'
>>>
어떤 요소 에 속성 치 를 추가 하려 면set() 방법 을 사용 할 수 있 습 니 다.

>>> e.set('_id','1234')
>>> tostring(e)
b'<stock _id="1234"><price>490.1</price><shares>100</shares><name>GOOG</name>
</stock>'
>>>
만약 원소 의 순 서 를 유지 하고 싶다 면,일반적인 사전 을 대체 하 는 구조OrderedDict 를 고려 할 수 있다.1.7 소절 을 참고 하 세 요.
토론 하 다.
XML 을 만 들 때 문자열 형식의 값 만 구성 할 수 있 도록 제 한 됩 니 다.예 를 들 면:

def dict_to_xml_str(tag, d):
  '''
  Turn a simple dict of key/value pairs into XML
  '''
  parts = ['<{}>'.format(tag)]
  for key, val in d.items():
    parts.append('<{0}>{1}</{0}>'.format(key,val))
  parts.append('</{}>'.format(tag))
  return ''.join(parts)
문 제 는 네가 수 동 으로 구 조 를 할 때 약간의 번 거 로 움 을 만 날 수 있다 는 것 이다.예 를 들 어 사전 의 값 에 특수 문자 가 포함 되 어 있 을 때 어떻게 됩 니까?

>>> d = { 'name' : '<spam>' }

>>> # String creation
>>> dict_to_xml_str('item',d)
'<item><name><spam></name></item>'

>>> # Proper XML creation
>>> e = dict_to_xml('item',d)
>>> tostring(e)
b'<item><name>&lt;spam&gt;</name></item>'
>>>
프로그램의 뒤에 있 는 예 에서 문자'<'와'>'가< 로 바 뀌 었 음 을 알 수 있 습 니 다.와<
이 문자 들 을 수 동 으로 변환 해 야 한다 면xml.sax.saxutils escape() unescape() 함 수 를 사용 할 수 있 습 니 다.예 를 들 면:

>>> from xml.sax.saxutils import escape, unescape
>>> escape('<spam>')
'&lt;spam&gt;'
>>> unescape(_)
'<spam>'
>>>
올 바른 출력 을 만 들 수 있 는 것 외 에 도 문자열 이 아 닌 인 스 턴 스 를 만 드 는 것 을 추천 하 는 또 다른 이유 가 있 습 니 다.문자열 조합 으로 더 큰 문 서 를 만 드 는 것 이 쉽 지 않 습 니 다.Element인 스 턴 스 는 XML 텍스트 를 분석 하 는 것 을 고려 하지 않 고 다양한 방식 으로 처 리 될 수 있 습 니 다.즉,고급 데이터 구조 에서 모든 작업 을 완성 하고 마지막 에 문자열 로 출력 할 수 있다.
이상 은 Python 이 사전 을 XML 로 변환 하 는 방법 에 대한 상세 한 내용 입 니 다.Python 이 사전 을 XML 로 변환 하 는 방법 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기