Программа получения и агрегирования xml-данных

Эдуард17 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
29.10.2010

ЗАДАЧА

Требуется реализовать программу получения нескольких файлов хмл-данных, обработку их и объединения в один общий.

Результатом работы является yml-файл для ЯндексМаркета

АЛГОРИТМ

1. Для каждого файла dirname(__FILE__).'/instructions/*.xml' выполнить:

1.1 Скопировать его по ftp-протоколу

1.2 скачать файл по http-протоколу отправив постом параметры с логином и паролем (при обращении файл сгенерируется на основе закаченного по ftp файла инструкций)

1.3 извлечь с содержимым теги

1.4 выполнить для каждого тега операции "Обработка хмл-данных для ЯндексМакета" п.п.4,5

2. Взять за основу один из скаченных файлов

2.1 выполнить для него "Обработка хмл-данных для ЯндексМакета" п.п.1,2,3

2.2 внутри тегов собрать теги из всех скаченных файлов

2.3 сохранить результат в файл dirname(__FILE__).'yandexmarket.yml'

Требования:

1. вначале файла комментарий с кратким описанием и перечнем файлов, директорий, куда программа пишет, то есть должны быть права записи

2. конфигурационные параметры (логин, пароль, имена хостов, названия файлов, $debug) хранить в отдельном файле

3. лог работы выводить в stdout с указанием даты и времени запуска и завершения программы, длительности, имен закаченных хмл-файлов и числа закешированных фотографий

Обработка хмл-данных для ЯндексМакета

0. Очистка

0.1. Удалить текст до строки не включая её

0.2. Удалить текст после строки не включая её

1. Внутри тега теги

XXX

XXX

заменить на

Company

Company

2. http://xxx.ru/ внутри тега

заменить на http://site.ru/

3. Замена тега внутри тега

Текст втнутри тегов вида http://xxx.ru/(.+)

заменить на http://site.ru/tours/$1.html

Примечание: $1 === (\w+)

4. Замена тегов внутри тега

4.1

Тег имеет вид http://xxx.ru//srcimg/([^/]+)

Cледует заменить на http://size.ru/tours/photo/country/$1

4.1

Тег имеет вид (http://xxx.ru/[^/]+) то есть обязательно указан атрибут id

- Весь тег следует заменить на http://size.ru/tours/photo/hotel/$1.jpg

- проверить существование файла dirname(__FILE__)."/photo/hotel/$1.jpg", если его нет,

то выполнить cp($2, dirname(__FILE__)."/photo/hotel/$1.jpg") - если при копировании произошла ошибка, вывести сообщение с указанием обоих файлов