2013-01-14 4 views
8

여러 속성이있는 XML <root> 요소가 있습니다. 나는 ElementTree 패키지를 사용하고 있습니다.ElementTree에서 속성 이름 및 값 가져 오기

xml 파일에서 트리를 구문 분석 한 후에 문서 루트가 표시되지만 요청한 특성 또는 전체 특성 목록을 가져 오려고합니다.

<root a="1" b="2" c="3"> 
    </blablabla> 
</root> 

어떻게 모든 ElementTree와 <root> 요소 이름과 속성 값을 검색 할 수 있습니다?

답변

13

Element은 사전 인 속성 .attrib을가집니다. 단순히 그것의 키 또는 값을 물어 mapping methods있어 사용

for name, value in root.attrib.items(): 
    print '{0}="{1}"'.format(name, value) 

또는

for name in root.attrib: 
    print '{0}="{1}"'.format(name, root.attrib[name]) 

또는 파이썬 dict.values() 또는 다른 방법 중 하나를 사용할 수를 사용

.

개별 속성을 얻으려면 표준 subscription syntax 사용

print root.attrib['a'] 
4

ElementTree 요소의 attrib 속성 (getroot에 의해 반환 된 루트 같은) 사전이다. 그래서 당신은 예를 들어, 수행 할 수 있습니다

from xml.etree import ElementTree 
tree = ElementTree.parse('test.xml') 
root = tree.getroot() 
print root.attrib 

있는 출력합니다, 당신의 예를

{'a': '1', 'b': '2', 'c': '3'} 
1

당신이되는 XMLObject의 각 요소에 대해 얻을 것이다 그것을 사용할 수있는 몇 가지 좋은 루프는 태그, 텍스트 속성의에 대한 2 레벨 XML에서 작동합니다. 반복하는 것이 가장 좋은 방법은 아니지만 단순한 작업에 유용 할 수 있습니다 ...

for headTag in xmlObject.getchildren(): 
    print headTag.tag, headTag.text, headTag.attrib 
    for bodyTag in headTag.getchildren(): 
     print "\t", bodyTag.tag, bodyTag.text, bodyTag.attrib