私はしたい正確なトラバーサルタイプの名前はわかりませんが、基本的には、現在の要素と逆の順序で要素ごとにドキュメントを読みたいと思っています。lxml.etreeの逆ツリートラバーサルをどこで調べるべきですか?
iterdescendants()
メソッドは何もしていないようで、iterancestors()
メソッドはサブ要素には入っていません。
私はしたい正確なトラバーサルタイプの名前はわかりませんが、基本的には、現在の要素と逆の順序で要素ごとにドキュメントを読みたいと思っています。lxml.etreeの逆ツリートラバーサルをどこで調べるべきですか?
iterdescendants()
メソッドは何もしていないようで、iterancestors()
メソッドはサブ要素には入っていません。
多分このような何か?
import lxml.etree as et
xmldata = """
<data>
<mango>1</mango>
<kiwi>2</kiwi>
<banana>3</banana>
<plum>4</plum>
</data>
"""
tree = et.fromstring(xmldata)
el = tree.find('plum')
print el.text
while True:
el = el.getprevious()
if el is None:
break
print el.text
結果:
4 3 2 1
それは動作しません。私は元々あまり説明していないと思っていますが、基本的にgetpreviousを返す必要があります。getpreviousがNoneの場合はgetparentが必要です。私はこれを処理する簡単な関数を書いたことがありますが、それは組み込むべきもののように思え、私はホイールの再発明が嫌いです。 – kryptobs2000
は、あなたが例を提供することはできますか?入力XMLはどんな順番でどのような順序で要素が横断されますか? – millimoose