Aquí una función php que utilizo al generar archivos XML, para «limpiar» cadenas de texto con caracteres no permitidos en XML como «<", ">«, «&», «‘». Usando arrays para guardar las cadenas a reemplazar con str_replace():
function limpioCaracteresXML($cadena){
    $search  = array("<", ">", "&", "'");
    $replace = array("<", ">", "&", "&apos");
    $final = str_replace($search, $replace, $cadena);
    return $final;
}
Un ejemplo de uso al generar el xml:
<title><?php echo limpioCaracteresXML($titulo); ?></title>
<pubDate><?php echo date("D, d M Y H:i:s O", $fecha)?></pubDate>
<link><?php echo limpioCaracteresXML($link)?></link>
<description><?php echo limpioCaracteresXML($descripcion); ?></description>
<category><?php echo limpioCaracteresXML($categoria); ?></category>
</item>
                                                        
Agradezco tu comentario 🤘