XML парсинг

imag777

Новичок
Добрый день!
Пишу простенькое приложение под Яндекс 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>
Моя попытка сделать вышеописанное средствами SimpleXML обернулась фейлом. Привожу детали:


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>
Есть идеи, как можно выдернуть атрибут cbid?
Спасибо
 

AmdY

Пью пиво
Команда форума
флоппик
ну вот нафига, пускай бы человек подебажил и сам решил свою проблему. негодяй.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
флоппик
ну вот нафига, пускай бы человек подебажил и сам решил свою проблему. негодяй.
Потому что я вижу, что он старался :) А simplexml не очень очевиден, и не очень аккуратно документирован.
 

imag777

Новичок
Большое спасибо за неравнодушие!
Насчёт документации абсолютно солгасен!
 
Сверху