Try XML Parser из 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() - имя файла или поток). Легко преобразовать его в цикл: просто возьмите всю необходимую информацию в вышеприведенных методах и вставьте их в некоторый список или стек. Итерации над ним, как только вы закончите синтаксический анализ.
Пожалуйста, покажите некоторые из вещей, которые вы пробовали. – Tomalak
Я пробовал http://github.com/joestump/python-simplexml/blob/master/simplexml.py, но если есть только 1 элемент, он не будет перебирать только концы в бесконечном цикле – Mike