Настроить парсинг XML при помощи XMLReader на PHP
2 000 руб. за проект
•
электронные деньги
Имеется интернет-магазин, работающий на CMS 1C-Битрикс. Данные о товарах
на сайт поступают после обработки xml-файлов от 7 разных поставщиков.
После смены одним из поставщиков параметров в xml-файле перестали
отображаться данные по остаткам. У остальных поставщиков данной проблемы
не возникло. Обработка прайсов происходит при помощи XMLReader на PHP.
Насколько я понимаю, из прай-листа поставщика берется строка, в которой
(которых) описывается количество товара:
<param name="status">Ожидается</param>
<param name="status">В наличии</param>
или
<stock1>1</stock1>
Вот рабочие параметры из файла init.php:
case "param":
if("status" != $xmlReader->getAttribute('name') && "Status" != $xmlReader->getAttribute('name')) continue;
$xmlReader->read();
if($xmlReader->nodeType == XMLReader::TEXT) {
$text = $xmlReader->value;
if(strpos($text,"В наличии") !== false){
$result['available'] = true;
}
if(strpos($text,"менее") !== false){
$result['available'] = true;
}
}
break;
case "stock":
$xmlReader->read();
if($xmlReader->nodeType == XMLReader::TEXT) {
$stock = (string)$xmlReader->value;
$stock = preg_replace("/[^0-9]/", '', strip_tags($stock));
$result['available'] = (intVal($stock) > 0);
}
break;
У проблемного поставщика в xml-файле раньше были параметры "есть в наличии" и "нет в наличии", сейчас они такие:
<available>false</available>
<available>true</available> Я написал следующий код, но остатки всё равно корректно не отображаются:
case "available":
$xmlReader->read();
if($xmlReader->nodeType == XMLReader::TEXT) {
$text = $xmlReader->value;
$result['available'] = strpos($text,"true") !== false;
}
break;
Нужно написать код, чтобы остатки по данному поставщику корректно отображались в 1С-Битрикс.
на сайт поступают после обработки xml-файлов от 7 разных поставщиков.
После смены одним из поставщиков параметров в xml-файле перестали
отображаться данные по остаткам. У остальных поставщиков данной проблемы
не возникло. Обработка прайсов происходит при помощи XMLReader на PHP.
Насколько я понимаю, из прай-листа поставщика берется строка, в которой
(которых) описывается количество товара:
<param name="status">Ожидается</param>
<param name="status">В наличии</param>
или
<stock1>1</stock1>
Вот рабочие параметры из файла init.php:
case "param":
if("status" != $xmlReader->getAttribute('name') && "Status" != $xmlReader->getAttribute('name')) continue;
$xmlReader->read();
if($xmlReader->nodeType == XMLReader::TEXT) {
$text = $xmlReader->value;
if(strpos($text,"В наличии") !== false){
$result['available'] = true;
}
if(strpos($text,"менее") !== false){
$result['available'] = true;
}
}
break;
case "stock":
$xmlReader->read();
if($xmlReader->nodeType == XMLReader::TEXT) {
$stock = (string)$xmlReader->value;
$stock = preg_replace("/[^0-9]/", '', strip_tags($stock));
$result['available'] = (intVal($stock) > 0);
}
break;
У проблемного поставщика в xml-файле раньше были параметры "есть в наличии" и "нет в наличии", сейчас они такие:
<available>false</available>
<available>true</available> Я написал следующий код, но остатки всё равно корректно не отображаются:
case "available":
$xmlReader->read();
if($xmlReader->nodeType == XMLReader::TEXT) {
$text = $xmlReader->value;
$result['available'] = strpos($text,"true") !== false;
}
break;
Нужно написать код, чтобы остатки по данному поставщику корректно отображались в 1С-Битрикс.
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.