我在整个文档中都打印了整个XML中的每个孩子。我如何才能得到与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)