XML findall在第一个发现处停止

时间:2018-08-29 23:25:02

标签: python xml

我正在尝试使用python 2.7和xml.etree.ElementTree解析XML。

它仅适用于树中的第一个元素,并且不会遍历它应捕获的所有其他标签。

下面是我用来遍历XML的循环。

prefixes=['conn','dummy']
for datasource in root.findall('.//datasource'):
        for relation in datasource.findall('.//relation'):
            if 'connection' in relation.attrib:
                if relation.attrib['connection'].startswith(tuple(prefixes)): 
                    sql = SQL(relation.text)

                    if sql.isCustom() is True:
                        return sql.findTables()
                    else:    
                        print(relation.attrib['table'])
                        return relation.attrib['table']

XML看起来像这样。

<datasources>
    <datasource>
        <connection>
            <relation connection="conn.dbe" table="table1">
    <datasource>
        <connection>
            <relation connection="conn.abc" table="table2">

我尝试将iterall以及findall('.//* relation')用作匹配模式,但到目前为止没有任何效果。

1 个答案:

答案 0 :(得分:0)

我只得到第一个表的原因是我找到它后就返回了,因此从未完成循环。