SimpleXMLElement addChild не работает в foreach - PullRequest
0 голосов
/ 16 ноября 2018

вот код:

$icmlData = file_get_contents($config['icml']);

$xmlIter = new SimpleXMLElement($icmlData);

foreach ($xmlIter->shop->offers->offer as $offer) {
    $id = $offer->attributes()['id'];
    $id = strval($id);

    $offer->addChild('externalId', $id);
    $offer->addChild('xmlId', $id);
}

$result = file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . 'icml_t.xml', $xmlIter->asXML());

Я беру xml из одного файла, пытаюсь добавить 2 дочерних элементов к каждому тегу 'offer' и помещаю этот xml в другой файл, но в результате я вижу дваидентичные файлы.

Нужна помощь.

1 Ответ

0 голосов
/ 19 ноября 2018

Итак, я не знаю, насколько это правильно, но изменение кода помогло решить проблему:

$icmlData = file_get_contents($config['icml']);

$xmlIter = new SimpleXMLElement($icmlData);

$i = 0;

foreach ($xmlIter->shop->offers->offer as $offer) {
    $id = $offer->attributes()['id'];
    $id = strval($id);

    $xmlIter->shop->offers->offer[$i]->addChild('externalId', $id);
    $xmlIter->shop->offers->offer[$i]->addChild('xmlId', $id);

    $i++;
}

$result = file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . 'icml_t.xml', $xmlIter->asXML());
...