Guardar datos del formulario en un file XML existente usando PHP

De acuerdo, entonces esto es lo que quiero hacer (NOTA: Todavía soy nuevo en PHP):

Tengo un formulario de logging para películas / series, etc. Los datos del formulario rellenado se registran (register.php) y se envían a una database MySQL, que funciona bien. Aquí viene el pero: también quiero, en el mismo file de logging (register.php), los datos que se almacenarán en un file XML existente (data.xml). Importante aquí es que cada formulario enviado con éxito se almacena en el mismo file XML (data.xml).

Muestro todas las "películas" registradas en una tabla HTML a través de un while-loop, que ahora recoge los datos de mi database. También pido ayuda para, en algún lugar fuera de la table, agregar un button que genere / muestre el contenido del file XML en una nueva pestaña (?). No hacer clic derecho para ver la fuente, ya que los datos de la tabla se recostackn de MySQL, esto es imposible.

Esto es lo que tengo hasta ahora (esto logra save cada envío en data.xml pero reemplaza si se hace otro envío – Quiero agregar NOT replace):

Primero, index.php:

<form enctype="multipart/form-data" action="core/register.php" method="post" autocomplete="true"> <p><input type="text" name="name" placeholder="Program name" /></p> <p><input type="date" name="date" placeholder="Program date" /></p> <p><input type="time" name="time" placeholder="Program time" /></p> <p><input type="text" name="bline" placeholder="B-line" /></textarea></p> <p><textarea name="synopsis" placeholder="Program synopsis" /></textarea></p> <p><textarea name="leadtext" placeholder="Lead text" /></textarea></p> <p><input type="url" name="url" placeholder="URL" /></p> <p><input type="submit" value="Register" name="register" /></p> </form> 

A continuación, data.xml:

 <?xml version="1.0" encoding="UTF-8"?> <programs> <program> <name></name> <date></date> <start_time></start_time> <b-line></b-line> <synopsis></synopsis> <leadtext></leadtext> <url></url> </program> </programs> 

Finalmente, register.php:

 require_once('db.php'); $str = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="xsl.xsl"?><programs></programs>'; $xml = simplexml_load_string($str); $name = $_POST['name']; $date = $_POST['date']; $time = $_POST['time']; $bline = $_POST['bline']; $synopsis = $_POST['synopsis']; $leadtext = $_POST['leadtext']; $url = $_POST['url']; $name = htmlentities($name, ENT_COMPAT, 'UTF-8', false); $date = htmlentities($date, ENT_COMPAT, 'UTF-8', false); $time = htmlentities($time, ENT_COMPAT, 'UTF-8', false); $bline = htmlentities($bline, ENT_COMPAT, 'UTF-8', false); $synopsis = htmlentities($synopsis, ENT_COMPAT, 'UTF-8', false); $leadtext = htmlentities($leadtext, ENT_COMPAT, 'UTF-8', false); $url = htmlentities($url, ENT_COMPAT, 'UTF-8', false); $xml->program->addChild('name', $name); $xml->program->addChild('date', $date); $xml->program->addChild('start_time', $time); $xml->program->addChild('b-line', $bline); $xml->program->addChild('synopsis', $synopsis); $xml->program->addChild('leadtext', $leadtext); $xml->program->addChild('url', $url); $doc = new DOMDocument('1.0'); $doc->formatOutput = true; $doc->preserveWhiteSpace = true; $doc->loadXML($xml->asXML(), LIBXML_NOBLANKS); $doc->save('data.xml'); 

He buscado durante horas sin encontrar exactamente lo que estoy buscando. También hice todo lo posible para probar muchas de mis propias "soluciones que no funcionan". Además, seleccioné las partes de mi código que son relevantes para las respuestas sobre este tema.

Necesita hacer que el nodo del program permanente asignándole un valor como ese:

 $xml->program = ""; 

Agregue esa línea justo antes de agregar nodos secundarios a ella:

 $xml->program = ""; $xml->program->addChild('name', $name); $xml->program->addChild('date', $date); ....