[英]How do I loop through XML and print properly using elementtree in python?
我得到整個xml中的每個childtwo以及整個文檔中的每個childone。 我如何才能獲得與孩子一起的孩子?
import xml.etree.ElementTree as ET
tree = ET.parse("C:/Users/thisuser/Desktop/test.xml")
root = tree.getroot()
for ticket in root.findall('.//Parent'):
Childone = ticket.find('.//Childone').text
for ticket in root.findall('.//ParentTwo'):
Childtwo = ticket.find('.//Childtwo').text
print "Childone={Childone}, Childtwo={Childtwo}".format(Childone=Childone, Childtwo=Childtwo)
結果
ChildOne=1 ChildTwo=a
ChildOne=1 ChildTwo=b
ChildOne=1 ChildTwo=c
ChildOne=1 ChildTwo=d
ChildOne=2 ChildTwo=a
ChildOne=2 ChildTwo=b
ChildOne=2 ChildTwo=c
ChildOne=2 ChildTwo=d
所需結果
ChildOne=1 ChildTwo=a
ChildOne=1 ChildTwo=b
ChildOne=2 ChildTwo=c
ChildOne=2 ChildTwo=d
XML樣本
<Parent>
<Childone>1</Childone>
<ParentTwo>
<Childtwo>a</Childtwo>
</ParentTwo>
<ParentTwo>
<Childtwo>b</Childtwo>
</ParentTwo>
</Parent>
<Parent>
<Childone>2</Childone>
<ParentTwo>
<Childtwo>c</Childtwo>
</ParentTwo>
<ParentTwo>
<Childtwo>d</Childtwo>
</ParentTwo>
</Parent>
問題是您在第二個for
循環的findall
中使用root
:
for ticket in root.findall('.//ParentTwo'):
相反,您應該使用外部循環中的ticket
來限制找到的ParentTwo
元素。 (還請注意,因為您已經使用了ticket
所以我將ticket
更改為ticket2
。):
for ticket2 in ticket.findall('.//ParentTwo'):
完整編輯的代碼...
import xml.etree.ElementTree as ET
tree = ET.parse("C:/Users/thisuser/Desktop/test.xml")
root = tree.getroot()
for ticket in root.findall('.//Parent'):
Childone = ticket.find('.//Childone').text
for ticket2 in ticket.findall('.//ParentTwo'):
Childtwo = ticket2.find('.//Childtwo').text
print "Childone={Childone}, Childtwo={Childtwo}".format(Childone=Childone, Childtwo=Childtwo)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.