imag777
Новичок
Добрый день!
Пишу простенькое приложение под Яндекс API, одной из частью которого является парсинг полученного xml файла и преобразование его в другой.
Дано:
На входе от сервера приходит XML файл со структурой:
Из сего файла необходимо выдернуть 2 значения: name и атрибут cbid из position и сформировать новый XML файл со следующей структурой:
Моя попытка сделать вышеописанное средствами SimpleXML обернулась фейлом. Привожу детали:
Итог: Имя добавляется ок, как только подключаю добавление атрибута - вываливается
P.S. Дабы убедиться в том, что парсер накидывает необходимую структуру, попробовал в сточке
сделать так:
Получается то, что необходимо в итоге:
Есть идеи, как можно выдернуть атрибут cbid?
Спасибо
Пишу простенькое приложение под Яндекс API, одной из частью которого является парсинг полученного xml файла и преобразование его в другой.
Дано:
На входе от сервера приходит XML файл со структурой:
PHP:
<response>
<recommendations>
<offer>
<name>Наименование товара</name>
<model-card offer-position="5">
<position pos="5" cbid="0.32"/>
</model-card>
</offer>
</recommendations>
</response>
Из сего файла необходимо выдернуть 2 значения: name и атрибут cbid из position и сформировать новый XML файл со следующей структурой:
PHP:
<offer-bids>
<offer-bid cbid="0.32">
<offer-name>Наименование товара</offer-name>
</offer-bid>
</offer-bids>
PHP:
$filename = "PUT_1.xml"; // имя конечного файла
$fh = fopen($filename,'w+');
$res= '<offer-bids></offer-bids>'; //создание корневого тега в конечном файле
fwrite($fh,$res);
fclose($fh);
$load = simplexml_load_file('PUT_1.xml'); //грузим итоговый файл
$load2 = simplexml_load_file('INPUT_1.xml'); //грузим входной файл
$addchild = $load->addChild('offer-bid',''); //создаём <offer-bid> в итоговом файле
$atr = $load2->recommendations->offer->model-card->position;
$addattr = $addchild->addAttribute('cbid', $load2['cbid']); //попытка добавить атрибут cbid (собственно здесь и появляется ошибка)
$addchild2 = $addchild->addChild('offer-name',$load2->recommendations->offer->name); // добавление Наименования в итоговый файл (добавляется ОК, проверено)
$load->asXML('PUT_1.xml');
$load2->asXML('INPUT_1.xml');
PHP:
Parse error: syntax error, unexpected T_OBJECT_OPERATOR
P.S. Дабы убедиться в том, что парсер накидывает необходимую структуру, попробовал в сточке
PHP:
$addattr = $addchild->addAttribute('cbid', $load2['cbid']);
PHP:
$addattr = $addchild->addAttribute('cbid', 'TEST']);
PHP:
<offer-bids>
<offer-bid cbid="TEST">
<offer-name>Наименование товара</offer-name>
</offer-bid>
</offer-bids>
Спасибо