Konvertieren mehrerer Tausend .xml-Dateien in .csv

Ich suche nach einer Möglichkeit, mehrere tausend .xml-Dateien in .csv umzuwandeln. Bei kleinen Mengen hatte ich damit keine Probleme, aber die Daten, mit denen ich es zu tun habe, befinden sich in mehreren tausend Ordnern. Genauer gesagt schaue ich mir MLB-Spieldaten im Laufe einer einzelnen Saison an. Jedes Spiel hat seinen eigenen separaten Ordner innerhalb anderer Ordner für Tag und Monat. In jedem Spielordner befinden sich mehrere Dateien, aber ich interessiere mich nur für eine .xml-Datei namens inning_all.xml für jedes Spiel. Ich muss diese ~2.500 Dateien in .csv-Dateien konvertieren, um von Stata interpretiert zu werden (Stata hat eine eingebaute XML-Importfunktion, ist aber mit diesen spezifischen Dateien nicht kompatibel; sie können nach der Konvertierung in .csv importiert werden).

Und Sie suchen eine Software dafür (ansonsten ist Ihre Frage hier off-topic)? Welches Betriebssystem, welcher Preis? Wir müssen auch ein Beispiel (einen Teil) einer solchen XML-Datei und Ihre erforderliche CSV-Ausgabe sehen. Eine hierarchische XML-Struktur und eine flache CSV-Struktur passen „natürlich“ nicht zusammen.
Die Tatsache, dass sie sich alle in verschiedenen Ordnern befinden, ist für die Frage nicht sehr relevant, da Sie sie mit vielen Tools in einem Ordner sammeln können. Es sei denn, Sie müssen die CSV in denselben Ordnern haben oder sie haben doppelte Namen und können nicht umbenannt werden . Bitte sagen Sie es.
Bitte erklären Sie dies "Ich hatte keine Probleme damit, dies in kleinen Mengen zu tun". Für mich klingt das so, als hätten Sie bereits eine Anwendung oder ein Skript, das Ihre Anforderungen erfüllt. Wie haben Sie diese Aufgabe für kleine Mengen gelöst? Was ist das Problem mit Ihrer aktuellen App/Skript?

Antworten (2)

Sie haben nichts über Ihre technologischen Einschränkungen gesagt, aber

(a) Das Konvertieren von XML in CSV ist mit jedem XSLT-Prozessor problemlos möglich

(b) XSLT 2.0-Prozessoren wie Saxon haben normalerweise die Fähigkeit, mehrere Dateien in Verzeichnisstrukturen zu verarbeiten, indem sie die Funktionen collection() oder uri-collection() verwenden.

Die Anzahl der Dateien ist kein Problem – ich habe viel größere Mengen als diese in ein oder zwei Minuten verarbeitet, und Saxons Implementierung der Funktion collection() ist multithreaded, sodass sie gut skaliert werden kann.

Ich würde vorschlagen, Python mit den eingebauten os.walk- , CSV- und XML-Parse-Bibliotheken wie expat zu verwenden .

  • Kostenlos, kostenlos & Open Source
  • Plattformübergreifend einschließlich Windows
  • Schnell und einfach zu lernen
  • os.walk „wandert“ durch einen Verzeichnisbaum, um alle interessanten Dateien zu finden.
  • Es gibt mehrere XML-Parser, aber Sie könnten sogar besser dran sein, die superstarke Verarbeitung regulärer Ausdrücke der re - Bibliothek zu verwenden.