2012-11-19 7 views
2

나는 다음과 같은 오류 ElementTreeiterparse()를 사용하지만 점점 아이튠즈 재생 목록을 구문 분석하려고에서 XPath를 사용할 수 없습니다 :파이썬 : ElementTree

AttributeError: 'Element' object has no attribute 'xpath' 

코드는 아래와 같습니다 : 나는

import xml.etree.ElementTree as ET 
context = ET.iterparse(file,events=("start", "end")) 
    # turn it into an iterator 
    context = iter(context) 
    # get the root element 
    event, root = context.next() 
    for event, elem in context: 
     z = elem.xpath(".//key") 
     elem.clear() 
     root.clear() 
    print z 

를하고있는 중이 야 무엇 잘못된? 파일이 너무 커서 어쨌든 iterparse()을 사용해야합니다. 그 Element 클래스 find, findallfindtext 방법에 대한

+0

보십시오 (".// 키 ")':

따라서, 다음과 유사한 뭔가 코드를 변경해야/key ")'. –

+0

는 0 값을 반환 함 – Volatil3

+0

'elem.clear()'는 다른 모든 요소를 ​​제거합니다. 'elem.clear()'와'root.clear()'를 제거하고'print'' **를'for' 루프 안에 넣으려고 했습니까? –

답변

3

xml.etree.ElementTreeprovides limited support for XPath expressions (더 xpath 방법이 없습니다 : 오류를 얻고있다 그 이유는).

또한 사용 된 메모리를 절약하기 위해 요소에 clear()을 호출하면 이후에만 으로 처리해야합니다. ./ "(대신 elem.xpath`의 elem.findall`

for event, elem in context: 
    for child in elem.findall(".//key"): 
     # process child 
    elem.clear() 
    root.clear() 
+0

관대 한 도움에 감사드립니다. – Volatil3