SimpleXML не может этого сделать, поэтому вам придется использовать DOM .Хорошей новостью является то, что DOM и SimpleXML - это две стороны одной медали, libxml.Поэтому независимо от того, используете ли вы SimpleXML или DOM, вы работаете с одним и тем же деревом.Вот пример:
$thing = simplexml_load_string(
'<thing>
<node n="1"><child/></node>
</thing>'
);
$dom_thing = dom_import_simplexml($thing);
$dom_node = dom_import_simplexml($thing->node);
$dom_new = $dom_thing->appendChild($dom_node->cloneNode(true));
$new_node = simplexml_import_dom($dom_new);
$new_node['n'] = 2;
echo $thing->asXML();
Если вы много делаете такого рода вещи, вы можете попробовать SimpleDOM , который является расширением SimpleXML и позволяет использовать DOMметоды напрямую, без преобразования из и в объекты DOM.
include 'SimpleDOM.php';
$thing = simpledom_load_string(
'<thing>
<node n="1"><child/></node>
</thing>'
);
$new = $thing->appendChild($thing->node->cloneNode(true));
$new['n'] = 2;
echo $thing->asXML();