Ho questo codice con ElementTree che funziona bene con Python 2.7. Avevo bisogno di ottenere tutti i nodi con il nome "A" sotto il nodo "X/Y".L'equivalente di iter() di ElementTree in Python2.6
from xml.etree.ElementTree import ElementTree
verboseNode = topNode.find("X/Y")
nodes = list(verboseNode.iter("A"))
Tuttavia, quando ho provato a eseguirlo con Python 2.6, ho ricevuto questo errore.
ionCalculateSkewConstraint.py", line 303, in getNodesWithAttribute
nodes = list(startNode.iter(nodeName))
AttributeError: _ElementInterface instance has no attribute 'iter'
Sembra che il nodo di Python 2.6 ElementTree non abbia l'iter(). Come posso implementare iter() con Python 2.6?
Funziona bene, grazie. Va bene, basta sostituire iter con findall? Quale sarebbe la ragione per cui iter() viene introdotto quando abbiamo finadll()? – prosseek
@prosseek 'findall' è molto più potente di' iter', e anche potenzialmente più lento. Pertanto, dovresti semplicemente usare 'iter' quando vuoi veramente tutti i nodi. In molti casi, vuoi solo un certo insieme di nodi, come '/ group/product/price'. Se è così, dai un'occhiata alla documentazione di 'findall' - potrebbe farti risparmiare un sacco di codice Python. – phihag
Quindi cosa causa l'errore? Ho lo stesso problema: root.iter funziona in 2.7, solleva l'errore sopra riportato in 2.6. findall l'ha riparato. – thumbtackthief