Python имеет интерфейс для синтаксического анализатора expat.
xml.parsers.expat
Это не проверяющий парсер, поэтому плохой xml не будет пойман. Но если вы знаете, что ваш файл правильный, то это очень хорошо, и вы, вероятно, получите точную информацию, которую хотите, и вы можете отбросить остальное на лету.
stringofxml = """<foo>
<bar>
<type arg="value" />
<type arg="value" />
<type arg="value" />
</bar>
<bar>
<type arg="value" />
</bar>
</foo>"""
count = 0
def start(name, attr):
global count
if name == 'type':
count += 1
p = expat.ParserCreate()
p.StartElementHandler = start
p.Parse(stringofxml)
print count # prints 4