Python XML 파일 – 읽고, 쓰고, 구문 분석하는 방법

XML이란 무엇입니까?

XML은 eXtensible Markup Language를 의미합니다. 중소 규모의 데이터를 저장하고 전송하도록 설계되었으며 구조화된 정보를 공유하는 데 널리 사용됩니다.

Python XML 문서를 구문 분석하고 수정할 수 있습니다. XML 문서를 구문 분석하려면 전체 XML 문서가 메모리에 있어야 합니다. 이 튜토리얼에서는 XML minidom 클래스를 어떻게 사용할 수 있는지 살펴보겠습니다. Python XML 파일을 로드하고 구문 분석합니다.

minidom을 사용하여 XML을 구문 분석하는 방법

구문 분석할 샘플 XML 파일을 만들었습니다.

1단계) 샘플 XML 파일 생성

파일 내부에는 이름, 성, 집, 전문분야(SQL, Python, 테스트 및 비즈니스)

minidom을 사용하여 XML을 구문 분석하는 방법

2단계) 구문 분석 기능을 사용하여 XML 파일을 로드하고 구문 분석합니다.

문서를 분석한 후에는 인쇄해 보겠습니다. "노드 이름" 문서의 루트와 "첫 번째 자식 태그 이름”. Tagname 및 nodename은 XML 파일의 표준 속성입니다.

minidom을 사용하여 XML 구문 분석

  • xml.dom.minidom 모듈을 가져오고 구문 분석해야 하는 파일(myxml.xml)을 선언합니다.
  • 이 파일에는 이름, 성, 집, 전문 지식 등과 같은 직원에 대한 몇 가지 기본 정보가 포함되어 있습니다.
  • XML 파일을 로드하고 구문 분석하기 위해 XML minidom의 구문 분석 기능을 사용합니다.
  • 우리는 변수 doc를 가지고 있고 doc는 구문 분석 함수의 결과를 얻습니다.
  • 파일에서 노드 이름과 하위 태그 이름을 인쇄하려고 하므로 인쇄 함수에서 선언합니다.
  • 코드 실행 - XML ​​파일의 노드 이름(#document)과 XML 파일의 첫 번째 하위 태그 이름(직원)을 인쇄합니다.

주의 사항:

Nodename 및 하위 태그 이름은 XML DOM의 표준 이름 또는 속성입니다.

3단계) ​​XML 문서에서 XML 태그 목록을 호출하여 인쇄합니다.

다음으로 XML 문서에서 XML 태그 목록을 호출하여 인쇄할 수도 있습니다. 여기에서는 SQL과 같은 기술 세트를 인쇄했습니다. Python, 지원 그리고 사업.

minidom을 사용하여 XML 구문 분석

  • 직원이 가지고 있는 모든 전문 지식을 추출할 변수 전문 지식을 선언합니다.
  • "getElementsByTagName"이라는 dom 표준 함수를 사용하세요.
  • 이것은 Skill이라는 모든 요소를 ​​​​가져옵니다.
  • 각 스킬 태그에 대해 루프를 선언하세요.
  • 코드를 실행하면 XNUMX가지 기술 목록이 제공됩니다.

XML 노드를 작성하는 방법

"createElement" 함수를 사용하여 새 속성을 생성한 다음 이 새 속성이나 태그를 기존 XML 태그에 추가할 수 있습니다. XML 파일에 새 태그 "BigData"를 추가했습니다.

  1. 기존 XML 태그에 새 속성(BigData)을 추가하도록 코드를 작성해야 합니다.
  2. 그런 다음 기존 XML 태그에 새 속성이 추가된 XML 태그를 인쇄해야 합니다.

XML 노드 작성

  • 새로운 XML을 추가하고 이를 문서에 추가하려면 "doc.create elements" 코드를 사용합니다.
  • 이 코드는 새로운 속성 "빅 데이터"에 대한 새로운 기술 태그를 생성합니다.
  • 이 기술 태그를 문서의 첫 번째 하위 항목(직원)에 추가하세요.
  • 코드를 실행하세요. 새로운 태그 "빅 데이터"가 다른 전문 지식 목록과 함께 표시됩니다.

XML 파서 예

Python 2 예

import xml.dom.minidom

def main():
# use the parse() function to load and parse an XML file
   doc = xml.dom.minidom.parse("Myxml.xml");
  
# print out the document node and the name of the first child tag
   print doc.nodeName
   print doc.firstChild.tagName
  
# get a list of XML tags from the document and print each one
   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
#Write a new XML tag and add it into the document
   newexpertise = doc.createElement("expertise")
   newexpertise.setAttribute("name", "BigData")
   doc.firstChild.appendChild(newexpertise)
   print " "

   expertise = doc.getElementsByTagName("expertise")
   print "%d expertise:" % expertise.length
   for skill in expertise:
     print skill.getAttribute("name")
    
if name == "__main__":
  main();

Python 3 예

import xml.dom.minidom

def main():
    # use the parse() function to load and parse an XML file
    doc = xml.dom.minidom.parse("Myxml.xml");

    # print out the document node and the name of the first child tag
    print (doc.nodeName)
    print (doc.firstChild.tagName)
    # get a list of XML tags from the document and print each one
    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

    # Write a new XML tag and add it into the document
    newexpertise = doc.createElement("expertise")
    newexpertise.setAttribute("name", "BigData")
    doc.firstChild.appendChild(newexpertise)
    print (" ")

    expertise = doc.getElementsByTagName("expertise")
    print ("%d expertise:" % expertise.length)
    for skill in expertise:
        print (skill.getAttribute("name"))

if __name__ == "__main__":
    main();

ElementTree를 사용하여 XML을 구문 분석하는 방법

ElementTree는 XML을 조작하기 위한 API입니다. ElementTree는 XML 파일을 처리하는 쉬운 방법입니다.

다음 XML 문서를 샘플 데이터로 사용하고 있습니다.

<data>
   <items>
      <item name="expertise1">SQL</item>
      <item name="expertise2">Python</item>
   </items>
</data>

ElementTree를 사용하여 XML 읽기:

먼저 xml.etree.ElementTree 모듈을 가져와야 합니다.

import xml.etree.ElementTree as ET

이제 루트 요소를 가져오겠습니다.

root = tree.getroot()

다음은 위의 xml 데이터를 읽기 위한 전체 코드입니다.

import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()

# all items data
print('Expertise Data:')

for elem in root:
   for subelem in elem:
      print(subelem.text)

출력 :

Expertise Data:
SQL
Python

요약

Python 한 번에 한 줄이 아니라 전체 XML 문서를 한 번에 구문 분석할 수 있습니다. XML 문서를 구문 분석하려면 전체 문서를 메모리에 저장해야 합니다.

  • XML 문서를 구문 분석하려면
  • xml.dom.minidom 가져오기
  • 문서를 구문 분석하려면 "parse" 함수를 사용하십시오( doc=xml.dom.minidom.parse (파일 이름);
  • 코드(=doc.getElementsByTagName("xml 태그 이름")를 사용하여 XML 문서에서 XML 태그 목록을 호출합니다.
  • XML 문서에 새 속성을 생성하고 추가하려면
  • "createElement" 함수 사용