Чтение XML файла Яндекс Маркета в PHP

Если требуется сделать импорт или обновление товаров по XML файлу Яндекс Маркета, можно применить расширении PHP Simplexml. Эта библиотека довольно быстрая и работает с большими файлами. О структуре xml файла можно ознакомиться в разделе помощи Яндекса.

1

Сохранение файла на сервер и его чтение

$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');
PHP

Если файл под паролем, нужно добавить авторизацию:

curl_setopt($ch, CURLOPT_USERPWD, 'логин:пароль');
PHP
2

Информация о магазине

Корневой раздел shop содержит информацию о магазине и другие разделы.
https://yandex.ru/support/partnermarket/elements/shop.html

// Дата и время генерации YML-файла.
echo strval($data['date']);

// name - короткое название магазина.
echo strval($data->shop->name);

// company - полное наименование компании.
echo strval($data->shop->company);

// url - URL главной страницы магазина.
echo strval($data->shop->url);
PHP
3

Список курсов валют

Элемент 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);
}
PHP
4

Категории

Блок категорий из представляет собой список, атрибут 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>
foreach ($data->shop->categories->category as $row) {
	$id = intval($row['id']);
	$parent = intval($row['parentId']);
	$name = strval($row);
	
	var_dump($id, $parent, $name);
}
PHP
5

Товары

В примере показаны только часто используемые элементы,
о всех элементах на 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);
}
PHP
01.06.2018, обновлено 27.08.2019 3235

Поделится

Темы

XML Яндекс

Другие публикации

После регистрации в системе эквайринга Сбербанка и получив доступ к тестовой среде, можно приступить к интеграции с...
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
Пример создания файла карты сайта (sitemap.xml) на PHP. Интеграция его на сайт и подключение его в robots.txt
Бывает так что сервер перенаправляет на другой URL. Например Google, если перейти на https://google.com c IP из РФ он...
Facebook ограничил свободный доступ к API. Теперь чтобы получить права для публикации записей нужно...
В статье описана регистрация клиента, получения access token, примеры использования методов API Instagram на PHP.