2011-07-29 2 views
0

minidom.Document v minidom.Document.documentElement?

class KantGenerator: 
    def _load(self, source): 
     sock = toolbox.openAnything(source) 
     xmldoc = minidom.parse(sock).documentElement 
     sock.close() 
     return xmldoc 

궁금한데

xmldoc = minidom.parse(sock) 

는 나에게도 똑같은 것을 주었을까요? (현재 인스턴스를 모두 참조하는 것)

pydoc 쿼리는 많은 단서도 제공하지 않습니다.

$ pydoc xml.dom.minidom.Document.documentElement 
xml.dom.minidom.Document.documentElement 
    Top-level element of this document. 

답변

4

minidom.Documentxml.dom.Document 목적이다.

Document에는 실제 XML 데이터가 포함 된 Element이 포함 된 인코딩과 같은 추가 항목이 포함되어 있습니다.

주 문서 (따라서 documentElement)에 Element 하나만있을 수 있습니다. 여기서 요소는 다른 요소의 자식을 많이 가질 수 있습니다.

둘 다 많은 방법을 공유하므로 (둘 다 xml.dom.Node에서 파생 됨) 대부분의 경우 서로 바꿔 사용할 수 있습니다.

+0

하지만'minidom.Document.firstChild'는'Document '의'Element'도 하나 반환합니다. 이 경우 데이터 속성'documentElement'와'firstChild'는 같은 인스턴스를 가리키는 것처럼 보입니다. –

+0

'Document'와'Element'에서 모두 확장되는'xml.dom.Node'는'firstChild' 속성을 포함하고 있기 때문에 사실입니다. 문서는 하나의 자식 요소만을 가질 수 있기 때문에'firstChild'와'documentElement'가 같은 것을 반환한다는 것은 의미가 있습니다. 'Element' 노드는'documentElement' 속성을 가지고 있지 않습니다. – TorelTwiddler