Настроить парсинг XML при помощи XMLReader на PHP

2 000 руб. за проект • электронные деньги
26 января 2019, 11:03 • 2 отклика • 30 просмотров
Имеется интернет-магазин, работающий на 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С-Битрикс.
Файлы