python xml 파일 읽 기 방법 분석

python 에서 xml 문장 을 읽 는 것 은 매우 많 지만,대부분의 문장 은 xml 파일 을 붙 인 다음 에 처리 파일 의 코드 를 붙인다.이렇게 하면 초보 자의 학습 에 불리 합 니 다.이 글 은 python 을 사용 하여 xml 파일 을 읽 는 방법 을 더욱 쉽게 가 르 칠 수 있 기 를 바 랍 니 다.
xml 이란 무엇 입 니까?
xml 는 태그 언어 를 확장 할 수 있 습 니 다.데 이 터 를 표시 하고 데이터 형식 을 정의 할 수 있 으 며 사용자 가 자신의 태그 언어 를 정의 할 수 있 는 소스 언어 입 니 다.
abc.xml

<?xml version="1.0" encoding="utf-8"?>
<catalog>
  <maxid>4</maxid>
  <login username="pytest" passwd='123456'>
    <caption>Python</caption>
    <item id="4">
      <caption>  </caption>
    </item>
  </login>
  <item id="2">
    <caption>Zope</caption>
  </item>
</catalog>
Ok,구조 적 으로 우리 가 흔히 볼 수 있 는 HTML 하이퍼텍스트 태그 언어 와 같 습 니 다.그러나 그들 이 디자인 한 목적 은 다르다.하이퍼텍스트 표기 언어데 이 터 를 표시 하기 위해 디자인 되 었 고 그 초점 은 데이터 의 외관 이다.그것 은 데 이 터 를 전송 하고 저장 하 는 데 사용 되 는데 그 초점 은 데이터 의 내용 이다.
그러면 다음 과 같은 특징 이 있다.
우선,태그 쌍 으로 구성 되 어 있 습 니 다./aa>
탭 에 속성 이 있 습 니 다:

태그 쌍 은 데 이 터 를 삽입 할 수 있 습 니 다:abc
탭 은 하위 탭 을 삽입 할 수 있 습 니 다(등급 관계 가 있 음).



태그 속성 가 져 오기
그렇다면 이러한 유형의 파일 을 python 으로 읽 는 방법 을 소개 합 니 다.

#coding=utf-8
import xml.dom.minidom

#  xml  
dom = xml.dom.minidom.parse('abc.xml')

#        
root = dom.documentElement
print root.nodeName
print root.nodeValue
print root.nodeType
print root.ELEMENT_NODE
mxl.dom.minidom 모듈 은 xml 파일 을 처리 하 는 데 사용 되 기 때문에 먼저 도입 해 야 합 니 다.
xml.dom.minidom.parse()는 xml 파일 을 열 고 이 파일 의 대상 dom 변 수 를 사용 합 니 다.
document Element 는 dom 대상 의 문서 요 소 를 얻 고 얻 은 대상 을 root 에 게 줍 니 다.
노드 마다 nodeName,nodeValue,nodeType 속성 이 있 습 니 다.
노드 이름 은 노드 이름 입 니 다.
nodeValue 는 결점 의 값 으로 텍스트 결점 에 만 유효 합 니 다.
node Type 은 결점 의 유형 입 니 다.catalog 는 ELEMENTNODE 형식
현재 다음 과 같은 몇 가지 가 있다.
'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'
NodeTypes-유명 상수
http://www.w3school.com.cn/xmldom/dom_nodetype.asp
하위 탭 가 져 오기
현재 catalog 의 하위 탭 을 가 져 올 탭 name

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>  </caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>
요소 이름 을 아 는 하위 요소 에 대해 서 는 getElementsByTagName 방법 으로 가 져 올 수 있 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>  </caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>
같은 탭 이름 의 탭 을 구분 하 는 방법:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>  </caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>
라벨 은 하나 가 아 닙 니 다.어떻게 구분 합 니까?

#coding=utf-8
import xml.dom.minidom

#  xml  
dom = xml.dom.minidom.parse('abc.xml')

#        
root = dom.documentElement

bb = root.getElementsByTagName('caption')
b= bb[2]
print b.nodeName

bb = root.getElementsByTagName('item')
b= bb[1]
print b.nodeName
root.getElementsByTagName('caption')은 caption 이라는 탭 을 얻 었 습 니 다.b[0]는 탭 의 첫 번 째 를 표시 합 니 다.b[2],이 태그 의 세 번 째 를 표시 합 니 다.
태그 속성 값 가 져 오기

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>  </caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>
라벨 은 속성 이 있 습 니 다.어떻게 그들의 속성 을 얻 습 니까?

#coding=utf-8
import xml.dom.minidom

#  xml  
dom = xml.dom.minidom.parse('abc.xml')

#        
root = dom.documentElement

itemlist = root.getElementsByTagName('login')
item = itemlist[0]
un=item.getAttribute("username")
print un
pd=item.getAttribute("passwd")
print pd

ii = root.getElementsByTagName('item')
i1 = ii[0]
i=i1.getAttribute("id")
print i

i2 = ii[1]
i=i2.getAttribute("id")
print i
getAttribute 방법 은 요소 의 속성 에 대응 하 는 값 을 얻 을 수 있 습 니 다.
탭 사이 의 데이터 가 져 오기

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
       <item id="4">
          <caption>  </caption>
      </item>
  </login>
  <item id="2">
      <caption>Zope</caption>
  </item>
</catalog>
탭 사이 에 데이터 가 있 습 니 다.이 데 이 터 를 어떻게 얻 습 니까?
탭 사이 의 데 이 터 를 얻 는 데 는 여러 가지 방법 이 있 습 니 다.
방법 1

#coding=utf-8
import xml.dom.minidom

#  xml  
dom = xml.dom.minidom.parse('abc.xml')

#        
root = dom.documentElement

cc=dom.getElementsByTagName('caption')
c1=cc[0]
print c1.firstChild.data

c2=cc[1]
print c2.firstChild.data

c3=cc[2]
print c3.firstChild.data
firstChild 속성 은 선 택 된 노드 의 첫 번 째 키 노드 를 되 돌려 줍 니 다.data 는 이 노드 의 데 이 터 를 가 져 오 는 것 을 표시 합 니 다.
방법 2

#coding=utf-8
from xml.etree import ElementTree as ET
per=ET.parse('abc.xml')
p=per.findall('./login/item')

for oneper in p:
  for child in oneper.getchildren():
    print child.tag,':',child.text


p=per.findall('./item')

for oneper in p:
  for child in oneper.getchildren():
    print child.tag,':',child.text
방법 2 는 좀 복잡 합 니 다.인용 모듈 도 앞의 것 과 다 릅 니 다.findall 은 어느 단계 탭 에서 옮 겨 다 니 는 지 지정 하 는 데 사 용 됩 니 다.
getchildren 방법 은 문서 순서에 따라 모든 하위 탭 을 되 돌려 줍 니 다.태그 이름(child.tag)과 태그 의 데이터(child.text)를 출력 합 니 다.
사실 방법 2 의 역할 은 여기에 있 지 않 습 니 다.그 핵심 기능 은 특정한 단계 의 탭 에 있 는 모든 하위 탭 을 옮 겨 다 닐 수 있 는 것 입 니 다.
python 이 xml 파일 을 읽 는 방법 에 대한 분석 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 이 xml 파일 을 읽 는 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기