Si te das cuenta el array de productos tiene el mismo nombre (variable) del nodo productos y por eso te da ese error:
Un ejemplo:
Código PHP:
Ver original<?php
$productos = array('producto1', 'producto2', 'producto3');
$doc = new DOMDocument("1.0", 'utf-8');
$datos = $doc->createElement("datos");
$productosNode = $doc->createElement("productos");
$doc->appendChild($datos);
$datos->appendChild($productosNode);
foreach ($productos as $producto) {
$portatil = $doc->createElement('portatil', $producto);
$productosNode->appendChild($portatil);
}
$doc->save('prueba.xml');