1. XML 소개
XML(확장형 마크업 언어)은 데이터를 전송하고 저장하도록 설계된 확장 가능한 마크업 언어를 의미하며, 오늘날 다양한 분야에서 다양한 응용 분야를 가진 많은 신기술의 핵심이 되었습니다. 이는 웹이 일정 단계에 이르면서 필연적으로 만들어진 결과물로, SGML의 핵심 특성, HTML의 단순한 특성, 그리고 명확하고 잘 구조화된 등 많은 새로운 특징을 갖추고 있습니다.
테스트. XML 파일
<?XML Version="1.0" encoding="UTF-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'> <caption>파이썬</caption> <item id="4"> <caption>테스트</caption> </item> </login> <item id="2"> <caption>조프</caption> </item> </catalog> XML에 대한 자세한 소개는 다음을 참고하시기 바랍니다:http://www.w3school.com.cn/xmldom/dom_nodetype.asp
2. XML 문서 구문 분석
파이썬이 XML을 파싱하는 데 일반적인 세 가지 방법이 있습니다: 하나는 xml.dom.* 모듈로, 이는 W3C DOM API의 구현체로, DOM API를 처리해야 할 때 매우 적합합니다; 두 번째는 xml.sax.* 모듈로, SAX API의 구현체로, 편리함을 희생하고 속도와 메모리 사용량을 위해 사용되며, SAX는 이벤트 기반 API로, 메모리에 완전히 로드하지 않고도 방대한 수의 문서를 "공중에서 처리할 수 있다"; 세 번째는 xml.etree.ElementTree 모듈(줄여서 ET)으로, DOM보다 훨씬 빠른 가벼운 Python 스타일 API를 제공하며, SAX와 비교할 때 사용하기 편리한 API가 많습니다. ET의 ET.iterparse는 "공중" 처리 방식을 제공하며, 전체 문서를 메모리에 로드할 필요가 없고 ET의 평균 성능도 SAX와 비슷합니다. 하지만 API는 조금 더 효율적이고 사용하기 쉽습니다.
2.1 xml.dom.*
문서 객체 모델(DOM)은 확장 가능한 마크업 언어를 다루기 위해 W3C 조직에서 권장하는 표준 프로그래밍 인터페이스입니다. DOM 파서가 XML 문서를 파싱할 때, 전체 문서를 한 번에 읽고, 문서 내 모든 요소를 트리 구조로 메모리에 저장한 후, DOM이 제공하는 다양한 함수를 사용해 문서의 내용과 구조를 읽거나 수정하거나, 수정된 내용을 XML 파일에 쓸 수 있습니다. 파이썬에서 xml.dom.minidom을 사용해 xml 파일을 파싱하세요.
a. 서브태그 획득 b. 동일한 태그명을 구별하는 라벨 c. 태그 속성 값을 얻습니다 d. 라벨 쌍 간 데이터 얻기
출력:
2.2 xml.etree.ElementTree
ElementTree는 XML을 다루기 위해 탄생했으며, Python 표준 라이브러리에는 두 가지 구현체가 있습니다: 하나는 순수 Python 구현체로, 예: xml.etree.ElementTree이고, 다른 하나는 더 빠른 xml.etree.cElementTree입니다. 참고: C 언어를 사용해 구현하는 것이 더 빠르고 메모리 소모도 적습니다.
a. 루트 노드의 다음 층을 횡단합니다 b. 개별 태그, 속성, 텍스트에 대한 첨자 접근 c. 루트 아래에서 지정된 태그를 찾는다 d. XML 파일 횡단 e. XML 파일 수정
출력:
첨부:
2.3 xml.sax.*
SAX는 SAX를 사용해 XML을 파서 파서와 이벤트 핸들러의 두 부분으로 파싱하는 이벤트 기반 API입니다.
파서는 XML 문서를 읽고 요소 시작과 요소 종료 이벤트와 같은 이벤트를 이벤트 핸들러로 전송하는 역할을 합니다
이벤트 프로세서는 이벤트에 응답하고 전달된 XML 데이터를 처리하는 책임을 집니다
일반적인 상황:
(1) 대형 문서 처리
(2) 문서의 일부만 필요하거나 특정 정보는 파일에서만 얻을 수 있습니다
(3) 제 객체 모델을 직접 만들고 싶습니다
|