Hola
Mira yo hice esto utilizando un archivo de texto plano, pero puedes sacar la idea para hacer el tuyo, de hecho el xml que se genera mantiene la misma estructura que describes tu.
Código:
$ruta = dirname(__FILE__).DIRECTORY_SEPARATOR.'datos.txt';
$datos = file($ruta);
unset($datos[0]); //eliminamos las cabeceras
$xml = new DomDocument("1.0");
$root = $xml->createElement("docentes");
$xml->appendChild($root);
/* ESTA PARTE ES LA QUE DEBE ITERARSE PARA GENERAR MULTIPLES NODOS*/
//NODO1
foreach ($datos as $i => $valor)
{
$myArray = explode('|', trim($valor));
$docentes = $xml->createElement("docente");
$root->appendChild($docentes);
$nNombre = $xml->createElement("nombre");
$nNombretn= $xml->createTextNode($myArray[0]);
$nNombre->appendChild($nNombretn);
$docentes->appendChild($nNombre);
$attrNombre = $xml->createAttribute("apellido");
$txtAttr = $xml->createTextNode($myArray[1]);
$attrNombre->appendChild($txtAttr);
$nNombre->appendChild($attrNombre);
}
$xml->save('example.xml');
Espero te sirva.
Saludos