[英]How do I loop through XML and print properly using elementtree in python?
I am getting every childtwo in the whole xml printed with every childone in the whole document. 我得到整个xml中的每个childtwo以及整个文档中的每个childone。 How do I get just the childtwos that go with the 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)
Result 结果
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
Desired Result 所需结果
ChildOne=1 ChildTwo=a
ChildOne=1 ChildTwo=b
ChildOne=2 ChildTwo=c
ChildOne=2 ChildTwo=d
XML sample 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>
The issue is that you're using root
in the findall
of your second for
loop: 问题是您在第二个
for
循环的findall
中使用root
:
for ticket in root.findall('.//ParentTwo'):
Instead, you should use ticket
from the outer loop to limit what ParentTwo
elements are found. 相反,您应该使用外部循环中的
ticket
来限制找到的ParentTwo
元素。 (Also note I changed ticket
to ticket2
since you've already used ticket
.): (还请注意,因为您已经使用了
ticket
所以我将ticket
更改为ticket2
。):
for ticket2 in ticket.findall('.//ParentTwo'):
Full edited code... 完整编辑的代码...
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.