Парсинг XML и вывод результата в файл - в таблицу (csv)
Имеется некоторое количество xml файлов, в которых указаны однотипные данные.
Вот пример содержания xml файла (полностью файл приложил к заданию):
- номер квартиры
МишинаОльгаВасильевна
56.4 - площадь помещения
- доля в праве 1/3 (может меняться 1/4, 1/2, 3/4, 3/5 и тп.). Нужно представить в виде: 0,333, т.е. поделить значение 1 на 3 (Numerator/Denominator) , округлить до тысячных и экспортировать в csv уже в виде 0,333 (также делить 1 на 4, 3 на 4, 3 на 5 и тп.). При отсутствии значений Numerator и Denominator (если собственник один, то их не будет), выдать в ячейку цифру 1.
Из этих данных должна получится таблица в файле csv (№квартиры;ФИО;Площадь;Доля в праве) в таком виде:
19;Мишина Ольга Васильевна;56,4;0,333
19;Аскар Равилевич Хабибуллин;56,4;0,333
35;Антонов Юрий Николаевич;62,8;1
41;Винодеев Кирил Никифорович;60,7;0,750
и тд..
Важные уточнения.
1. Количество файлов xml для парсинга может быть от 5 до 500-700;
2. Все данные должны быть записаны в один файл csv с разделителем ; (точка с запятой);
3. В 1 файле xml могут быть одни данные "№квартиры", "площадь" на несколько разных "ФИО", "доля в праве".
Каждое новое ФИО надо записывать в отдельную строку, как в примере и нужно распространить данные "№квартиры", "площадь" на каждое значение "ФИО", "доля в праве" внутри одной квартиры.
4. Площадь помещения в xml указана с точкой, разделяющей десятичные числа (56.4). Необходимо при экспорте заменить точку на запятую и в файл csv записать 56,4.
5. Программа должна иметь веб интерфейс с полями:
- путь к папке с xml (где лежат те файлы, которые надо парсить. Пусть парсит все, что лежит в папке);
- кнопку "создать csv" (старт, ок, go - не важно);
Готовый csv должен появиться в той же папке (если это мешает процессу - в любой другой - не существенно).
Примечание: на рабочей машине стоит эмулятор сервера MAMP для mac os, все операции можно делать локально. В случае нехватки ресурсов указанного приложения, можно расширить либо заменить другим эмулятором по рекомендации исполнителя.
Для теста приложил пачку xml (около 60 файлов) - как раз то с чем приходится работать.