https://www.facturascripts.com/comm3/index.php?page=community_ver_plugin&id=20
No lo he mirado, pero este puede que te sirva de guía o incluso de dependencia, ya que importa/exporta a xml.
Aunque no se si es lo más adecuado, yo en tu caso crearía un modelo que represente el documento a guardar, de modo que en el __construct puedas pasarle un array de todas las propiedades que va a tener el xml, y luego una función "asXML($parametro_opcional)" estilo a esto
http://php.net/manual/es/simplexmlelement.asxml.php
De modo que conviertes un array a xml, y al uso sería bastante directo:
$factura = new array(
'campo1' => valor1,
'campo2' => valor2,
....
'lineas' => array(
'campoX' => valorX,
'campoY' => valorY,
)
);
$xml = new MiFacturaXML($factura);
$xml->asXML() // Devolvería el texto del XML
$xml->asXML($filename) // Guardaría el texto del XML en un archivo