Puede que hayan clases listas para usarlas pero desconozco alguna. Yo lo haría asi:
Código PHP:
<?php
//guardo en una variable el contenido que tendrá el xml,
//primero el encabezado del archivo xml resultante
$texto_xml="<?xml version='1.0' encoding='ISO-8859-1'?>\n";
//luego concateno el nodo raiz
$texto_xml.="<agenda>\n";
//codigo de la consulta a mysql
$result=mysql_query("select * from agenda",$link);
while($fila=mysql_fetch_array($result))
{
//concateno tag xml y datos de cada tag
$texto_xml.=" <contacto>\n";
$texto_xml.=" <nombre>\n";
$texto_xml.=" ".$fila['nombre']."\n";
$texto_xml.=" </nombre>\n";
$texto_xml.=" <fono>\n";
$texto_xml.=" ".$fila['fono']."\n";
$texto_xml.=" </fono>\n";
$texto_xml.=" </contacto>\n";
}
//cierro nodo raiz
$texto_xml.="</agenda>\n";
//ya tengo todos los datos en una variable de texto,
//los grabo en un archivo
$fp=fopen("archivo.xml","w+");
fwrite($fp,$texto_xml);
fclose($fp);
?>