Yo no he dicho nada de descomentar líneas. Si están comentadas, es porque no son necesarias.
Tampoco dije nada de poner un else{} más, porque el fichero 27.xml que has mostrado corresponde con el primer if() indicado, por lo que no debería llegar hasta el final de todos los if() y fallar.
Lo que dije es: si un fichero, que suponemos que es un XML, llega al final, entonces, justo antes de sacar el mensaje de error, imprimir en pantalla el contenido (los primeros bytes de $data) para saber porqué no ha sido cazado por ninguno de los if() anteriores.
El mensaje de error que muestras, según
lo que he encontrado en Google, es que estás intentando interpretar el contenido de un fichero que está vacío, o que, realmente, no es un XML.
Parece bastante obvia la explicación del error. El problema es si estamos completamente seguros de que estamos pasando contenido XML al
parseador.
¿El fichero 27.xml que has pasado antes es el que provocó este mensaje de error?