2013-08-01 1 views
3

의 다음 형제 얻는 방법 : 내가 발견 한 요소를 작성하고 싶습니다 대신 do something 지금의 I 그래서 같은 XML 파일에서 찾을 내가 요소를 반복하고 etree._Element

for elem in fileasxml.xpath("//elementname[some condition]"): 
    do something 

을 첫 번째 다음 형제를 파일에 더한 것입니다. 이제 파일에 쓰는 방법을 알고 있습니다. 다음 형제를 얻는 방법을 모르겠습니다.

나는 getnext() 메서드를 보았지만 얻고 자하는 요소가 elem이 아니기 때문에 작동하지 않습니다. 내가 elem.xpath()

어떤 아이디어를 사용할 수 없습니다

같은 이유?

+0

'itersiblings()'은 어떻습니까? http://lxml.de/api/lxml.etree._Element-class.html#itersiblings –

답변

0

그래, 내가 틀렸어. 다음 형제를 찾기 전에 내가 발견 한 요소를 새로운 구조에 추가하는 실수를했습니다.

getnext() 실제로 작동합니다!

+1

답변을 개선해주세요. 제발 ... xD를 얻지 못합니다. – Enissay

0

의 I이이 iterator of a parent Element.

# parent is an xml.etree.ElementTree.Element 
parent_iter = parent.iter() 
for child in parent_iter: 
    if child.tag == 'mytag' and child.text == 'mytext': 
     return parent_iter.next() # target sibling 

이 종류의 못생긴 아마 스레드 안전하지로했다 않았다 방법,하지만 내가 관심이있는 모든 단지 첫 번째 형제를 잡아입니다 그것은 나를 위해 작동 .