XML을 Python의 사전으로 변환

Hemank Mehtani 2023년1월30일
  1. xmltodict모듈을 사용하여 XML 문자열을 Python의 사전으로 변환
  2. cElemenTree라이브러리를 사용하여 XML 문자열을 Python의 사전으로 변환
XML을 Python의 사전으로 변환

XML은 Extensible Markup Language로 알려져 있습니다. 중소 량의 데이터를 저장 및 전송하는 데 사용되며 구조화 된 정보 공유에도 널리 사용됩니다. Python을 사용하면 XML 문서를 구문 분석하고 수정할 수 있습니다.

이 튜토리얼에서는 파이썬에서 XML 문자열을 사전으로 변환하는 방법을 보여줍니다.

xmltodict모듈을 사용하여 XML 문자열을 Python의 사전으로 변환

xmltodict는 XML 작업을 JSON처럼 느끼게하는 Python의 모듈입니다. XML의 구조로 인해이 모듈을 사용하여 쉽게 사전으로 변환 할 수 있습니다.

아래 코드 스 니펫을 참조하십시오.

import xmltodict

xml_data = """
    <student>
      <id>DEL</id>
      <name> Jack </name>
      <email>jack@example.com</email>
      <smeseter>8</smeseter>
      <class>CSE</class>
      <cgpa> 7.5</cgpa>
    </student>
"""

d = xmltodict.parse(xml_data)
print(d)

출력:

OrderedDict([('student', OrderedDict([('id', 'DEL'), ('name', 'Jack'), ('email', 'jack@example.com'), ('smeseter', '8'), ('class', 'CSE'), ('cgpa', '7.5')]))])

여기에서 결과가 정렬 된 사전의 형태임을 알 수 있습니다. 정렬 된 사전은 사전에서 키-값 쌍의 순서를 유지합니다. 여기서parse()함수는 XML 데이터를 정렬 된 사전으로 구문 분석합니다.

cElemenTree라이브러리를 사용하여 XML 문자열을 Python의 사전으로 변환

cElementTree는 XML 문서를 구문 분석하고 탐색 할 수있는 필수 Python 라이브러리입니다. cElementTree를 사용하면 XML 문서를 작업하기 쉬운 트리 구조로 나눌 수 있습니다.

XML 데이터를 구문 분석하고 사전으로 변환하는 자체 함수를 만들 것입니다. collections모듈의deafultdict클래스 객체를 사용하여 원하는 형식으로 최종 결과를 얻습니다.

다음 코드를 참조하십시오.

from collections import defaultdict
from xml.etree import cElementTree as ET


def xml2dict(t):
    d = {t.tag: {} if t.attrib else None}
    children = list(t)
    if children:
        dd = defaultdict(list)
        for dc in map(etree_to_dict, children):
            for k, v in dc.items():
                dd[k].append(v)
        d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}}
    if t.attrib:
        d[t.tag].update(("@" + k, v) for k, v in t.attrib.items())
    if t.text:
        text = t.text.strip()
        if children or t.attrib:
            if text:
                d[t.tag]["#text"] = text
        else:
            d[t.tag] = text
    return d


xml_data = ET.XML(
    """
    <student>
      <id>DEL</id>
      <name> Jack </name>
      <email>jack@example.com</email>
      <smeseter>8</smeseter>
      <class>CSE</class>
      <cgpa> 7.5</cgpa>
    </student>
"""
)

d = xml2dict(xml_data)

print(d)

출력:

{'student': {'id': 'DEL', 'name': 'Jack', 'email': 'jack@example.com', 'smeseter': '8', 'class': 'CSE', 'cgpa': '7.5'}}

이것은 사전의 트리 구조입니다. 최종 사전은 일반적으로 두 메서드 모두에서 중첩 된 사전입니다. 이는 XML의 구조 때문입니다.

관련 문장 - Python Dictionary

관련 문장 - Python XML