私はこのコードをPython 2.7でうまく動作するElementTreeと一緒に使っています。 "X/Y"ノードの下に名前 "A"を持つすべてのノードを取得する必要がありました。ElementTreeのiter()はPython2.6で同等です
from xml.etree.ElementTree import ElementTree
verboseNode = topNode.find("X/Y")
nodes = list(verboseNode.iter("A"))
しかし、Python 2.6で実行しようとすると、このエラーが発生します。
ionCalculateSkewConstraint.py", line 303, in getNodesWithAttribute
nodes = list(startNode.iter(nodeName))
AttributeError: _ElementInterface instance has no attribute 'iter'
Python 2.6のElementTreeのノードにiter()がないようです。 iter()をPython 2.6でどのように実装できますか?
それはうまく動作します、ありがとう。 iterをfindallと置き換えるだけでOKですか? finadll()があるときにiter()が導入される理由は何でしょうか? – prosseek
@prosseek 'findall'は' iter'よりも強力ですし、潜在的に遅くなる可能性もあります。したがって、本当にすべてのノードが必要な場合は、単に 'iter'を使うべきです。多くの場合、 '/ group/product/price'のような特定のノードだけが必要です。その場合、 'findall'のドキュメンテーションを見てください - それはあなたに多くのPythonコードを保存するかもしれません。 – phihag
次に、エラーの原因は何ですか?私は同じ問題を抱えています:root.iterは2.7で動作し、2.6で上記のエラーが発生します。 findallはそれを修正しました。 – thumbtackthief