2010-09-08 7 views
2

J'utilise le serveur GlassFish et l'erreur suivante garde à venir:à propos SAXParseException: le contenu n'est pas autorisé en Prolog

Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog. 
     at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:304) 
     at com.sun.enterprise.deployment.io.DeploymentDescriptorFile.read(DeploymentDescriptorFile.java:226) 
     at com.sun.enterprise.deployment.archivist.Archivist.readStandardDeploymentDescriptor(Archivist.java:480) 
     at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:305) 
     at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:213) 
     at com.sun.enterprise.deployment.archivist.ApplicationArchivist.openArchive(ApplicationArchivist.java:813) 
     at com.sun.enterprise.instance.WebModulesManager.getDescriptor(WebModulesManager.java:395) 
     ... 65 more 
+2

Veuillez fournir la déclaration ' McDowell

+0

duplication possible de [org.xml.sax.SAXParseException: le contenu n'est pas autorisé dans le prologue] (http://stackoverflow.com/questions/5138696/org-xml-sax-saxparseexception-content-is-not-allowed-in -prolog) – Raedwald

Répondre

4

Vérifiez ce lien

http://mark.koli.ch/2009/02/resolving-orgxmlsaxsaxparseexception-content-is-not-allowed-in-prolog.html

En bref, certains fichier XML contient le modèle à trois octets (0xEF 0xBB 0xBF) à l'avant (juste avant <?xml ...?>), qui est la marque d'ordre des octets UTF-8. L'analyseur XML par défaut de Java ne peut pas gérer ce cas.

La solution rapide et sale est d'enlever l'espace blanc à l'avant du fichier XML:

String xml = "<?xml ..."; 
xml = xml.replaceFirst("^([\\W]+)<","<"); 

Notez que le String.trim() dost ne suffit pas, car il équilibre seulement les caractères blancs limités .

+0

Belle prise, je viens de me faire brûler par l'UTF8 Bom sur une série de fichiers. –

+0

Une meilleure solution consiste à utiliser le 'BOMInputStream' fourni par le framework Spring. – Starfish

+0

Génial! Résolu. –

Questions connexes