Попробуйте парсер xml из пакета xml.sax
в стандартной библиотеке.
from xml.sax import parse
from xml.sax.handler import ContentHandler
from sys import argv
class Handler(ContentHandler):
def startElementNS(self, name, qname, attrs):
self.startElement(name, attrs)
def endElementNs(self, name, qname):
self.endElement(name, attrs)
def startElement(self, name, qname, attrs):
... do whatever you like on tag start...
def characters(self, content):
... on tag content ...
def endElement(self, name):
... on tag closing ...
if __name__ == "__main__":
parse(argv[1], Handler())
Здесь я предположил, что argv [1] - это путь к файлу, который вы хотите проанализировать. (первый аргумент функции parse () - это имя файла или поток). Его легко преобразовать в цикл for: просто соберите всю необходимую информацию в описанных выше методах и поместите их в какой-либо список или стек. Переберите его, как только закончите анализ.