0

我有表单的 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 以与上面给出的相同顺序重复很多。

4

2 回答 2

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>
于 2013-03-28T09:44:46.053 回答
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
    ...

或者,您可以将操作放在 dict 中并避免使用 if-elif-else 咒语。

于 2013-03-28T09:48:35.273 回答