2011-10-30 63 views
0

我不確定我想要做的遍歷的確切類型的名稱,但基本上我想按照與當前元素相反的順序從元素中讀取文檔元素。我應該在哪裏尋找lxml.etree的反向樹遍歷?

iterdescendants()方法似乎沒有做任何事情,並且iterancestors()方法不會進入子元素,它只是步進出來,如果你知道我的意思。

+0

你能提供一個例子嗎?輸入XML是什麼樣子以及按什麼順序遍歷元素? – millimoose

回答

0

也許是這樣的?

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 
+0

這不起作用。我不認爲我原來解釋得太好,但基本上它應該是前面的,如果getprevious是None,它應該是getparent,如果getoarent是none,它應該返回None。我已經寫了一個簡單的函數來處理這個問題,但它似乎應該是內置的,我討厭重新發明輪子。 – kryptobs2000