Преобразование нескольких тысяч файлов .xml в .csv

Я ищу способ конвертировать несколько тысяч файлов .xml в .csv. У меня не было проблем с этим в небольших количествах, но данные, с которыми я имею дело, находятся в пределах нескольких тысяч папок. В частности, я просматриваю игровые данные MLB за один сезон. Каждая игра имеет свою отдельную папку в других папках для дня и месяца. В каждой папке с игрой есть несколько файлов, однако меня интересует только один файл .xml с именем inning_all.xml для каждой игры. Мне нужно преобразовать эти ~ 2500 файлов в файлы .csv, чтобы их интерпретировала Stata (у stata есть встроенная функция импорта xml, но она несовместима с этими конкретными файлами; их можно импортировать после преобразования в .csv).

И вы ищете софт для этого (иначе ваш вопрос здесь не по теме)? Какая ОС, какая цена? Нам также нужно увидеть пример (часть) такого XML-файла и необходимый вам вывод в формате CSV. Иерархическая структура XML и плоская структура CSV не совпадают «естественным образом».
Тот факт, что они все находятся в разных папках, не очень актуален для вопроса, потому что многие инструменты позволяют собрать их в одну папку. Если только вам не нужно, чтобы файлы CSV находились в одних и тех же папках, или если они имеют повторяющиеся имена и не могут быть переименованы . Пожалуйста, скажите так.
Пожалуйста, объясните это: «У меня не было проблем с этим в небольших количествах». Для меня это звучит так, как будто у вас уже есть приложение или скрипт, который решает ваши потребности. Как вы справились с этой задачей для небольших количеств. В чем проблема с вашим текущим приложением/скриптом?

Ответы (2)

Вы ничего не сказали о своих технологических ограничениях, но

(a) преобразование XML в CSV легко выполняется с помощью любого процессора XSLT

(b) Процессоры XSLT 2.0, такие как Saxon , обычно имеют возможность обрабатывать несколько файлов в структурах каталогов с помощью функций collection() или uri-collection().

Количество файлов не является проблемой — я обрабатывал гораздо большие объемы за минуту или две, а реализация функции collection() в Saxon является многопоточной, поэтому она хорошо масштабируется.

Я бы предложил использовать python со встроенными библиотеками синтаксического анализа os.walk , csv и xml, такими как expat .

  • Бесплатно, бесплатно и с открытым исходным кодом
  • Кроссплатформенность, включая Windows
  • Быстро и легко учиться
  • os.walk будет «обходить» дерево каталогов, чтобы найти все интересующие файлы.
  • существует несколько синтаксических анализаторов xml, но вам может быть даже лучше использовать сверхмощную обработку регулярных выражений библиотеки re .