python - 如何在 python 中循环使用 elementtree 并正确打印 XML?
问题描述
我让整个 xml 中的每个 childtwo 都与整个文档中的每个 childone 一起打印。我如何获得与 childone 一起使用的 childtwos?
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>
解决方案
问题是您在root
第二findall
个for
循环中使用:
for ticket in root.findall('.//ParentTwo'):
相反,您应该使用ticket
from 外部循环来限制ParentTwo
找到的元素。(另请注意,我已更改ticket
为,ticket2
因为您已经使用过ticket
。):
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)
推荐阅读
- mongodb - mongoDB 在通过 datastage 插入日期格式(YYYY-MM-DD)时向日期字段添加 4 小时和 5 小时?这是正常行为吗?
- html - 将按钮插件输入与文本对齐
- node.js - 当我指定它返回数据时,graphql Mutation 返回 null
- django - 来自 CORS 预检通道的 CORS 标头“Access-Control-Allow-Headers”中缺少令牌“access-control-allow-origin”
- csv - 如何根据列的内容将行转换为列
- excel - 遍历每个工作表时返回运行时错误“1004”的代码
- mysql - 在组上选择 MAX() 不会返回相应的同级列
- java - Spring Webflux Mono:无法将结果收集为列表
- java - Java NumberFormat 舍入模式,为什么半数格式 1.015 到 1.01 而不是 1.02
- python - matplotlib 上下文中的条形提示是什么?