Ответ 1
Как уже упоминалось, SimpleXML не поддерживает это, поэтому вам придется использовать DOM. Здесь я рекомендую: расширьте SimpleXMLElement тем, что вам нужно использовать в ваших программах. Таким образом, вы можете сохранить все манипуляции с DOM и другие XML-магии вне вашей реальной программы. Сохраняя эти два вопроса отдельно, вы улучшаете читаемость и ремонтопригодность.
Здесь, как расширить SimpleXMLElement с помощью нового метода prependChild():
class my_node extends SimpleXMLElement
{
public function prependChild($name, $value)
{
$dom = dom_import_simplexml($this);
$new = $dom->insertBefore(
$dom->ownerDocument->createElement($name, $value),
$dom->firstChild
);
return simplexml_import_dom($new, get_class($this));
}
}
$actors = simplexml_load_string(
'<actors>
<actor>Al Pacino</actor>
<actor>Zsa Zsa Gabor</actor>
</actors>',
'my_node'
);
$actors->addChild('actor', 'John Doe - last');
$actors->prependChild('actor', 'John Doe - first');
die($actors->asXML());