Pourquoi mes navigateurs affichent-ils des fichiers XML comme des pages vierges?

Chaque fois que j'ouvre un fichier XML, tout ce que je reçois est une page vierge au lieu de l'arborescence. Le fichier lui-même est correct et le chargement est correct, je peux le voir via View Source ou dans le Firebug. J'ai essayé de désactiver tous mes addons et j'ai essayé d'exécuter Firefox en mode sans échec, mais le problème n'a pas été résolu.

Je suppose que j'ai dérangé ma configuration en quelque sorte et Firefox essaie maintenant de rendre les fichiers XML comme des fichiers HTML. J'ai essayé de googler, mais sans succès. Aidez-moi, s'il vous plaît?

UPD: fichier d'exemple: http://lj.lain.ru/3/1273657698603.sample.xml J'ai également remarqué que d'une façon ou d'une autre, tous les navigateurs de la machine agissent de la même façon, alors je modifie la question en conséquence

    Si le fichier XML est mal formé, le navigateur ne sait pas quoi faire avec lui et, dans mon expérience, ne montre rien.

    Si le fichier XML est valid plupart des navigateurs (IE8, Chrome et Firefox) donnent un message tel que This XML file does not appear to have any style information associated with it. The document tree is shown below. This XML file does not appear to have any style information associated with it. The document tree is shown below. Et entrer dans un mode spécial pour afficher des fichiers XML avec des fonctionnalités telles que pouvoir bloquer les blocs de code.

    Regardez ici: Validateur XML

    Je viens d'obtenir et de résoudre un problème similaire: à partir de mon application ASP.NET MVC, j'ai un contrôleur qui renvoie XML brut que je veux voir dans le navigateur Web en tant qu'arbre DOM.

    Chrome fonctionne bien, mais IE 11 affiche simplement une page vierge.

    Le problème semble être l'en-tête HTTP "Content-Type": s'il ne contient pas de valeur de charset, IE affiche simplement une page vierge (sauf si vous avez un en-tête Content-Disposition, auquel cas IE vous propose de sauvegarder le XML) .

    Ainsi, la réponse HTTP suivante est OK pour Chrome, mais IE affiche une page vierge:

     HTTP/1.1 200 OK Cache-Control: private, s-maxage=0 Content-Type: application/xml Server: Microsoft-IIS/8.0 Date: Fri, 25 Jul 2014 14:29:02 GMT Content-Length: 693 <?xml version="1.0" encoding="utf-16"?><data>...</data> 

    Remarque: Assurez-vous de fournir la longueur de contenu correcte, bien que je n'ai pas testé ce qui se passe si l'en-tête Content-Length est manquant ou a une mauvaise valeur. De plus, j'ai supprimé les en-têtes X générés par IIS à partir de cette impression, mais il est prudent de les quitter.


    Mais ce qui suit fonctionne sous IE et Chrome :

     HTTP/1.1 200 OK Cache-Control: private, s-maxage=0 Content-Type: application/xml; charset=utf-8 Server: Microsoft-IIS/8.0 Date: Fri, 25 Jul 2014 14:29:02 GMT Content-Length: 693 <?xml version="1.0" encoding="utf-16"?><data>...</data> 

    La seule différence c'est l'addition ; charset=utf-8 ; charset=utf-8 dans l'en-tête Content-Type.

    Pour les développeurs ASP.NET MVC, cela signifie que si vous souhaitez rendre XML brut et prendre en charge IE, vous ne pouvez pas utiliser:

     string xmldata = ... return this.File(Encoding.UTF8.GetBytes(xmldata), "application/xml"); 

    Au lieu de cela, les travaux suivants:

     string xmldata = ... Response.ContentType = "application/xml"; Response.ContentEncoding = Encoding.UTF8; Response.AddHeader("Content-Length", Convert.ToString(xmldata.Length)); return this.Content(xmldata); 

    Sincères amitiés.

    Ceci est spécifique à Firefox, mais je pense qu'il vaut un coup de feu:

    Accédez à Aide \ Dépannage des informations sur le menu Firefox et cliquez sur le bouton pour ouvrir le dossier contenant votre profil.

    Sauvegardez, puis supprimez le fichier mimeTypes.rdf, fermez toutes les instances de Firefox et ouvrez encore Firefox.

    Cela obligera FF à générer de nouveau les actions par défaut pour les types mime qu'il connaît, cela peut résoudre le problème s'il est causé par quelque chose de FF étrange.

    Si vous chargez le XML à partir d'un serveur, vous devez définir le type de contexte de l'en-tête en texte / xml.

    Par exemple, en PHP, vous devez mettre cela avant la sortie de votre texte:

     header("Content-type: text/xml"); 

    Le xml a-t-il une étiquette au sommet similaire à celle-ci?

     <?xml version="1.0"?> 

    Cela préparera le navigateur afin qu'il sache quoi faire.

    En plus de ce que d'autres ont écrit, certains / la plupart des webbrowsers ne peuvent pas rendre les fichiers xml qui sont écrits selon la norme XML 1.1

    Firefox affichera un message d'erreur indiquant la version 1.1 dans le prologue xml.

     <?xml version="1.1"?> ---------------^ 

    Internet Explorer affichera simplement une page vierge.

    Si vous êtes un développeur de logiciels, soyez informé que le manque de support XML 1.1 ne se limite pas aux navigateurs Web. Il existe également un manque de support pour XML 1.1 dans de nombreuses langues de programmation. (C'est-à-dire que l'analyseur DOM par défaut de Java 8 ne supporte pas XML 1.1). Vous pouvez préférer adhérer à la version 1.0, si vous avez le choix.

    Vous pouvez bien sûr supprimer le prologue de votre fichier xml. Mais cela ne fonctionnera pas toujours. (C.-à-d. Les nœuds xml peuvent contenir certains caractères de contrôle spécifiques, qui étaient interdits dans la version 1.0).