2012-04-15 2 views
3

저는 Python을 처음 사용하고 XML을 구문 분석하는 프로그램을 작성하는 데 매우 익숙합니다. 난 내가 'NodeList' object has no attribute 'len' 오류가 발생 NodeList 수 있다고 생각에 .len() 호출하려고 할 때 문제가 발생합니다. documentation 말한다 때문에 나에게 정말 놀라운 일이다 :Python에서 XML을 구문 분석하고 'NodeList'객체에 'len'속성이 없습니다.

또한

, 파이썬 DOM 인터페이스는 약간의 추가 지원이있는 NodeList 객체가 파이썬 시퀀스로 사용할 수 있도록 제공해야합니다.

translationDom = parse(xmlFileName) 
testFunction(translationDom) 

내가 싶지 않아 ... Main()에서 다음

import xml.dom.minidom 

def testFunction(translationDOM): 
    textCollection = translationDOM.getElementsByTagName("onscreen_text") 
    for onscreenText in textCollection: 
     print textCollection.len() 

및 모든 NodeList를 구현

여기

내 코드의 ()에 대한 지원을 포함해야 여기 내 전체 XML을 게시하십시오 (방대한). 그러나 비슷한 블록이 있습니다 :

<onscreen_text> 
    <source id="2036" unique_name="blah" should_be_translated="True"> 
    .... 
</onscreen_text> 

여기에 전체 오류 텍스트입니다 :

File "trophytool.py", line 155, in <module> 
    main() 
    File "trophytool.py", line 134, in main 
    testFunction(translationDom) 
    File "trophytool.py", line 64, in testFunction 
    print textCollection.len() 
AttributeError: 'NodeList' object has no attribute 'len' 

당신은 그것을 발견 <onscreen_text> 태그의 수를 인쇄 할 것 같아,하지만하지 않습니다. 왜 이런거야?

+0

보십시오'textCollection.length' – Torious

답변

1

이 대신보십시오 :

print len(textCollection) 

설명 : len에 대한 지원은 일반적으로 클래스가 차례로 당신이 len(object)를 호출 할 수있는 __len__() 방법 (안 len())를 구현하는 것을 의미한다.

+0

그냥 이것을 테스트하고 작동합니다. 감사. – mukmuk64

+0

반가워요. 수락하는 것을 잊지 마세요 (10 분 후) –

1

getElementsByTagName() 메서드는 항목이 하나만있는 경우에도 항상 목록을 반환합니다. 당신이 "학교"태그에 대한 포인터를 가지고 당신이 그것을 것

myNode.getElementsByTagName("department") 

를 호출하는 경우

<school> 
    <department /> 
</school> 

만약 아이폰에의 노드의 목록을 반환 다음 XML 예를 들어 당신은 getElementsByTagName() 메소드에 대한 호출이 위 문장 대신 이것을 할 수있는 하나의 항목만을 리턴 할 것이라고 확신한다.

myNode.getElementsByTagName("department").item(0) 

이며 노드가 하나 뿐인 노드 목록 대신 단일 노드를 반환합니다.

관련 문제