使用xml tree iter方法,但要注意给定分支的结束

时间:2017-05-31 17:58:33

标签: python xml

让我们说我有一个包含多个子节点的xml文件,我想迭代直到其中一个分支结束。

<bookstore>
  <classical>This classiccal books</classical>
     <date>2017-05-31</date>
        <schedule>
            <type>Blues</type>
            <region>
                 <name>Alaska</name>
                 <transaction>
                     <transactionNo>455</transactionNo>
        ...
        </schedule>
        <schedule>
        </schedule>
        <anotherTag>
        </anotherTag>
...

我希望迭代xml树,每次第一次输入分支计划时都要注意,然后在退出分支计划时也要注意。

如何在python中使用xml树解析器?

如果我搜索所有后代,我第一次进入时会知道,但是当我退出时却没有?我可以修改下面的代码,以便在离开分支计划时知道吗?

import xml.etree.ElementTree as ET
from lxml import etree
tree = ET.parse(xml_data)
for elem in tree.iter():
    print elem.tag, elem.attrib

1 个答案:

答案 0 :(得分:0)

您可以a query获取所需的元素,然后单独循环遍历它们,而不是遍历所有内容:

import xml.etree.ElementTree as ET
xml_data = '''
<bookstore>
    <schedule><type>Foo</type></schedule>
    <schedule><type>Bar</type></schedule>
    <schedule><type>Baz</type></schedule>
</bookstore>
'''
tree = ET.fromstring(xml_data)
for schedule in tree.findall("schedule"):
    print schedule.find("type").text