Здравствуйте уважаемые форумчане!
(извините, не нашел в редакторе возможность скрыть блоки с кодом под спойлер)
Необходимо изменить обработку XML документов в PHP скрипте.
Ранее скрипт обрабатывал файл прайс-листа поставщика в XML формате, в котором структура состояла только из элементов,
(пример)
а с недавнего времени, поставщик изменил структуру XML документа, добавив к элементам атрибуты
(пример)
Из-за чего, конечно же, скрипт работать перестал.
На сегодняшний день мы имеем два XML файла с измененной структурой. Первый отвечает за загрузку новых товаров на сайт, второй за обновление остатков и цен всех товаров сайта товаров. (назовем их условно product.xml и product-stock.xml)
Новая структура для товара в файле product.xml выглядит так:
А старая структура XML документа файле product.xml выглядела так:
Новая структура для товара в файле product-stock.xml (остатки и цены) выглядит так:
А старая структура XML документа в файле product_stock.xml выглядела так:
В новой и старой структуре документов, кроме собственно структуры, различаются еще и названия некоторых элементов. Вот список изменений в названиях, которые были задействованы в скрипте, и понадобятся для того чтобы ничего не упустить в процессе работы (слева - названия из старых xml файлов, справа - то как они называются в новых файлах):
id -> prodID
price -> BaseRetailPrice
Изменена структура блоков
category -> categories
assort -> assortiment
Далее привожу пример того как это работало, и что нужно будет переписать в php:
XML файл получали через file_get_contents и обрабатывали в simplexml_load_string. Затем, если мы добавляем новые товары из XML файла product.xml то выполняется такой код (здесь как раз и работали с элементами, ранее полученными из XML):
Ну и другая функция работала с файлом обновления остатков и цен product_stock.xml
(на всякий случай, привожу для примера)
Собственно, повторюсь:
Так как поставщик изменил структуру xml файлов, необходимо научить php скрипт понимать атрибуты из xml и работать с ними.
Предложения пишите в комментарии, или в личку на форуме. Стараюсь оперативно мониторить тему. Другие каналы связи уже после согласования сроков и стоимости
Удачного дня!