Versuchen Sie, die folgende Python-Datei mit der Funktion lxml.etree.iterparse zu analysieren.
"sampleoutput.xml"
%Vor%Ich habe den Code aus Parsing Large XML-Datei mit Python ausprobiert lxml und Iterparse
vor dem Aufruf von etree.iterparse (MYFILE) habe ich MYFILE = geöffnet ("/ Users / eric / Desktop / wikipedia_map / sampleoutput.xml", "r")
Aber es erscheint der folgende Fehler
%Vor%irgendwelche Ideen? Danke!
Das Problem ist, dass XML nicht gut formatiert ist, wenn es nicht genau ein Top-Level-Tag hat. Sie können Ihr Beispiel korrigieren, indem Sie das gesamte Dokument in <items></items>
-Tags einschließen. Außerdem benötigen Sie die <desc/>
-Tags, um die von Ihnen verwendete Abfrage ( description
) zu finden.
Das folgende Dokument erzeugt korrekte Ergebnisse mit Ihrem vorhandenen Code:
%Vor%Soweit ich weiß, erwartet xml.etree.ElementTree normalerweise, dass die XML-Datei ein "root" -Element enthält, d. h. ein XML-Tag, das die gesamte Dokumentstruktur umschließt. Von der Fehlermeldung, die Sie gepostet haben, würde ich annehmen, dass dies auch das Problem ist:
"Zeile 5" bezieht sich auf das zweite <item>
-Tag, also bezweifle ich, dass Python beklagt, dass weitere Daten folgen, nachdem das angenommene Wurzelelement (d. h. das erste <item>
-Tag) geschlossen wurde.