Если требуется сделать импорт или обновление товаров по XML файлу Яндекс Маркета, можно применить расширении PHP Simplexml. Эта библиотека довольно быстрая и работает с большими файлами. О структуре xml файла можно ознакомиться в разделе помощи Яндекса.
$ch = curl_init('http://site.com/market.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
file_put_contents(__DIR__ . '/file.xml', $html);
$data = simplexml_load_file(__DIR__ . '/file.xml');
Если файл под паролем, нужно добавить авторизацию:
Корневой раздел shop содержит информацию о магазине и другие разделы.
https://yandex.ru/support/partnermarket/elements/shop.html
Элемент currencies
содержит список валют магазина.
https://yandex.ru/support/partnermarket/currencies.html
<currencies>
<currency id="RUR" rate="1"/>
<currency id="USD" rate="60"/>
</currencies>
foreach ($data->shop->currencies->currency as $row) {
$id = strval($row['id']);
$rate = strval($row['rate']);
var_dump($id, $rate);
}
Блок категорий из представляет собой список, атрибут parentId
указывает ID родительской категории.
https://yandex.ru/support/partnermarket/categories.html
<categories>
<category id="1" parentId="0">Лоты для творчества</category>
<category id="2" parentId="1">Картон</category>
<category id="3" parentId="1">Трафареты</category>
</categories>
В примере показаны только часто используемые элементы,
о всех элементах на https://yandex.ru/support/partnermarket/offers.html
<offer id="123" available="true">
<url>http://site.com/product/123</url>
<price>5000</price>
<oldprice>6000</oldprice>
<currencyId>RUR</currencyId>
<categoryId>3</categoryId>
<name>Краска с экстра блеском "Mystik ink"</name>
<vendor>Brand</vendor>
<picture>http://site.com/img/123.jpg</picture>
<description>Краска на основе сольвента идеально подходят для стекла</description>
</offer>
foreach ($data->shop->offers->offer as $row) {
// id - идентификатор предложения.
$id = intval($row['id']);
// available - статус товара «в наличии» / «на заказ».
$available = intval($row['available']);
// url - URL страницы товара на сайте магазина.
$url = strval($row->url);
// price - актуальная цена.
$price = strval($row->price);
// oldprice - старая цена.
$oldprice = strval($row->oldprice);
// currencyId - валюта.
$currencyId = strval($row->currencyId);
// currencyId - идентификатор категории товара.
$categoryId = intval($row->categoryId);
// name - название товара.
$name = strval($row->name);
// vendor - название производителя.
$vendor = strval($row->vendor);
// picture - изображение.
$picture = strval($row->picture);
// description - описание.
$description = strval($row->description);
}