我有
形式的xml<root>
<tag1> </tag1>
<tag2> </tag2>
<tag3> </tag3>
<tag1> </tag1>
<tag2> </tag2>
<tag3> </tag3>
</root>
我需要按顺序解析xml
tag1 -> tag2 -> tag3 -> tag1 -> tag2 -> tag3
目前我正在使用
root = tree.getroot()
for data in root.findall('tag1')
do_operations(data)
for data in root.findall('tag2')
do_operations(data)
但是这种方法给了我很明显
tag1 -> tag1 -> tag2 -> tag2 -> tag3 -> tag3
这不是我想要的。
你能否提出一种最佳的方法,我可以用所需的方式来分析XML。 tag1,tag2,tag3以与上面给出的顺序重复很多次。
答案 0 :(得分:2)
IIUC,你不能简单地遍历root
本身吗?
>>> for data in root:
... print data
...
<Element tag1 at 0x102dea7d0>
<Element tag2 at 0x102dea8c0>
<Element tag3 at 0x102dd6d20>
<Element tag1 at 0x102dea7d0>
<Element tag2 at 0x102dea8c0>
<Element tag3 at 0x102dd6d20>
答案 1 :(得分:1)
您可以迭代孩子而不是使用find:
for child in root:
do operations...
如果对不同的标签执行不同的操作,可以使用child.tag来确定要执行的操作:
for child in root:
if child.tag == 'tag1':
do operations
elif child.tag == 'tag2':
do other operations
...
或者你可以将操作放在一个字典中,并避免使用if-elif-else咒语。