Есть задача: импортировать товары в Opencart из XML посредством расширения.
Проблема в том, что формат файла который просит расширение OpenCart'a не совпадает с тем, который генерит бух.прога заказчика. По неизвестным причинам, заказчик не может изменить формат генерируемого файла.
Было решено написать небольшой конвертер на PHP который бы принимал файл заказчика и генерировал файл, который расширение сможет корректно прочитать.
И так. Есть входящий XML со списком товаров такого вида:
spoiler<?xml version="1.0" encoding="UTF-8"?>
<SHOP>
<SHOPITEM>
<NAME>Product 1</NAME>
<PRODUCT_ID/>
<Quantity>5</Quantity>
<MODEL>Product 1 Model</MODEL>
<SKU>302942275</SKU>
<SIZE>XL</SIZE>
</SHOPITEM>
<SHOPITEM>
<NAME>Product 1</NAME>
<PRODUCT_ID/>
<Quantity>6</Quantity>
<MODEL>Product 1 Model</MODEL>
<SKU>302942275</SKU>
<SIZE>2XL</SIZE>
</SHOPITEM>
<SHOPITEM>
<NAME>Product 1</NAME>
<PRODUCT_ID/>
<Quantity>7</Quantity>
<MODEL>Product 1 Model</MODEL>
<SKU>302942275</SKU>
<SIZE>3XL</SIZE>
</SHOPITEM>
<SHOPITEM>
<NAME>Product 2</NAME>
<PRODUCT_ID/>
<Quantity>5</Quantity>
<MODEL>Product 2 Model</MODEL>
<SKU>302942278</SKU>
<SIZE>XL</SIZE>
</SHOPITEM>
</SHOP>
т.е. одинаковые товары с разными размерами разделены. Нужно сделать вот так:
spoiler<?xml version="1.0" encoding="UTF-8"?>
<SHOP>
<SHOPITEM>
<NAME>Product 1</NAME>
<PRODUCT_ID/>
<Quantity>2</Quantity>
<MODEL>Product 1 Model</MODEL>
<SKU>302942275</SKU>
<OPTIONS>
<OPTION>
<NAME>Size</NAME>
<VALUE>M</VALUE>
<QUANTITY>1</QUANTITY>
</OPTION>
<OPTION>
<NAME>Size</NAME>
<VALUE>L</VALUE>
<QUANTITY>3</QUANTITY>
</OPTION>
<OPTION>
<NAME>Size</NAME>
<VALUE>XL</VALUE>
<QUANTITY>1</QUANTITY>
</OPTION>
<OPTION>
<NAME>Size</NAME>
<VALUE>2XL</VALUE>
<QUANTITY>2</QUANTITY>
</OPTION>
</OPTIONS>
</SHOPITEM>
</SHOP>
т.е. чтобы каждый товар был уникальным и все его размеры выводились внутри, в теге OPTIONS (ну и по мелочи, переименовать некорые строки).
Как лучше это реализовать? Примерно логика понятна: нужно прочитать файл, распарсить его в массив, и пересобрать новый массив с нужными параметрами и сгенерировать из него новый xml. Для этого, на мой взгляд, отлично подходит встроенный SimpleXML. Но пока не понятно как не придумал как именно пересобирать массив. Посоветуйте, как бы Вы справились с данной задачей. Спасибо.