我想知道如何使用Python中的库Element Tree
创建一个while循环:
while there is still child marker :
cross each marker
因为我有一个由软件生成的XML文件,但是它可以是:
<root
<child1
<child2
<child1
<child2
可能是
<root
<child1
<child2
<child3
<child1
<child2
<child3
没有while
循环,我必须为每种情况编写不同的代码
感谢您的帮助。
答案 0 :(得分:0)
Element.iter()方法将首先遍历元素后代的深度
import xml.etree.ElementTree as ET
s = '''
<root>
<child1>
<child2>
<child3></child3>
</child2>
</child1>
<child1>
<child2></child2>
</child1>
</root>'''
root = ET.fromstring(s)
用法:
>>> for c in root.iter():
... print(c.tag)
root
child1
child2
child3
child1
child2
>>> e = root.find('child1')
>>> for c in e.iter():
... print(c.tag)
child1
child2
child3
所有元素都具有相同名称的树。
s = '''
<root foo='0'>
<child1 foo='1'>
<child1 foo='2'>
<child1 foo='3'></child1>
</child1>
</child1>
<child1 foo='4'>
<child1 foo='5'></child1>
</child1>
</root>'''
root = ET.fromstring(s)
>>> for e in root.iter():
... print(e.tag, e.attrib['foo'])
root 0
child1 1
child1 2
child1 3
child1 4
child1 5
>>>