expat ParseFile abbrechen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Redoute
User
Beiträge: 16
Registriert: Donnerstag 5. Juni 2008, 10:21

Ich lese eine Datei mit xml.parsers.expat.ParseFile() und einem StartElementHandler. Ich will mir zum Beispiel von Millionen Elementen nur die ersten 10 anschauen. Wie kann ich ParseFile() dann beenden, sodass das Programm nach dem Aufruf fortfährt?
deets

Schmeiss doch einfach ne Exception, die du dann oben faengst.
BlackJack

@Redoute: Bei einer Push-API kommt man wohl nur mit einer Ausnahme heraus, sofern die API selbst nichts anderes anbietet, aber Du könntest doch auch einen anderen Parser nehmen mit einer Pull-API. Die ElementTree-API (entweder aus der Standardbibliothek oder aus `lxml`) kennt eine `iterparse()`-Funktion.
Redoute
User
Beiträge: 16
Registriert: Donnerstag 5. Juni 2008, 10:21

Danke schön euch beiden. Exceptions halte ich ja nach wie vor für Hexenwerk :roll:, nach dem Hinweis war das aber selbst für mich ganz easy.

BlackJack, die von dir genannten Bibliotheken laden aber immer den gesamten Baum auf einmal in den Arbeitsspeicher, oder? Das war für mich immer der Grund, expat zu verwenden.
BlackJack

@Redoute: `iterparse()` lädt nicht den ganzen Baum. Das ist ja der Sinn von Pull-APIs.
Antworten