Warum zeigen meine Browser XML-Dateien als leere Seiten an?

7

Jedes Mal, wenn ich eine XML-Datei öffne, erhalte ich nur eine leere Seite anstelle eines Tag-Baums. Die Datei selbst ist korrekt und wird in Ordnung geladen. Ich kann sie über View Source oder im Firebug anzeigen. Ich habe versucht, alle meine Addons auszuschalten und Firefox im abgesicherten Modus auszuführen, aber das Problem wurde nicht gelöst.

Ich vermute, dass ich meine Konfiguration irgendwie durcheinander gebracht habe und Firefox versucht nun, XML-Dateien als HTML-Dateien zu rendern. Ich habe versucht zu googeln, aber ohne Erfolg. Hilfe bitte?

UPD: Beispieldatei: http://lj.lain.ru/3/1273657698603.sample.xml Außerdem ist mir aufgefallen, dass alle Browser auf dem Computer jetzt gleich funktionieren, daher ändere ich die Frage entsprechend

n1313
quelle
Welche Version von Firefox verwenden Sie? Das Neueste?
SV88
ja natürlich.
n1313
Haben Sie versucht, eine Neuinstallation durchzuführen, oder ist dies keine Option? Es scheint, als ob einige Dateien kaputt sind.
sv88
Dieses Problem ist hier für ein Jahr. Ich habe Firefox mehrmals aktualisiert. Zählt dies als Neuinstallation?
n1313
Das zählt wahrscheinlich. Welches Betriebssystem verwenden Sie und welche Browser? Beispielsweise verfügen Internet Explorer, Firefox und Opera über eine XML-Ansicht, während Safari und Chrome leere Seiten anzeigen.
SV88

Antworten:

3

Wenn die XML-Datei fehlerhaft ist, weiß der Browser nicht, was er damit machen soll, und zeigt meiner Erfahrung nach nichts an.

Wenn es sich bei der XML-Datei validum eine Datei handelt, geben die meisten Browser (IE8, Chrome und Firefox) eine Meldung wie aus This XML file does not appear to have any style information associated with it. The document tree is shown below.und wechseln in einen speziellen Modus zum Anzeigen von XML-Dateien mit Funktionen wie dem Reduzieren von Codeblöcken.

Schauen Sie hier: XML Validator

Alan Whitelaw
quelle
3

Ich habe gerade ein ähnliches Problem erhalten und gelöst: In meiner ASP.NET MVC-Anwendung habe ich einen Controller, der unformatiertes XML zurückgibt, das ich im Webbrowser als DOM-Baum sehen möchte.

Chrome macht es gut, aber IE 11 zeigt einfach eine leere Seite.

Das Problem scheint der HTTP-Header "Content-Type" zu sein: Wenn er keinen Zeichensatzwert enthält, zeigt der IE einfach eine leere Seite an (es sei denn, Sie haben einen Content-Disposition-Header. In diesem Fall bietet Ihnen der IE das Speichern des XML an). .

Die folgende HTTP-Antwort ist für Chrome in Ordnung, der IE zeigt jedoch eine leere Seite an:

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>

Hinweis: Stellen Sie sicher, dass Sie die richtige Inhaltslänge angeben, obwohl ich nicht getestet habe, was passiert, wenn der Header für die Inhaltslänge fehlt oder einen falschen Wert hat. Außerdem habe ich die von IIS generierten X-Header aus diesem Ausdruck entfernt, aber es ist sicher, sie zu belassen.


Folgendes funktioniert jedoch sowohl unter IE als auch unter 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>

Der einzige Unterschied ist das Hinzufügen ; charset=utf-8im Content-Type-Header.

Für ASP.NET MVC-Entwickler bedeutet dies, dass Sie Folgendes nicht verwenden können, wenn Sie unformatiertes XML rendern und IE unterstützen möchten:

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

Stattdessen funktioniert Folgendes:

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

Mit freundlichen Grüßen.

Codetuner
quelle
0

Dies ist spezifisch für Firefox, aber ich denke, es ist einen Versuch wert:

Gehen Sie im Firefox-Menü zu Hilfe \ Informationen zur Fehlerbehebung und klicken Sie auf die Schaltfläche, um den enthaltenen Ordner Ihres Profils zu öffnen.

Sichern und löschen Sie die Datei mimeTypes.rdf, schließen Sie alle Instanzen von Firefox und öffnen Sie Firefox erneut.

Dadurch wird FF gezwungen, die Standardaktionen für die ihm bekannten MIME-Typen neu zu generieren. Dies kann das Problem beheben, wenn es durch etwas Seltsames verursacht wird, das FF tut.

ChrisB
quelle
0

Wenn Sie das XML von einem Server laden, müssen Sie den Header-Kontexttyp auf text / xml setzen.

In PHP müssen Sie dies beispielsweise vor Ihre Textausgabe stellen:

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

Hat die XML oben ein ähnliches Tag?

<?xml version="1.0"?>

Dadurch wird der Browser so vorbereitet, dass er weiß, was zu tun ist.

nhutto
quelle
0

Zusätzlich zu dem, was andere geschrieben haben, können einige / die meisten Webbrowser keine XML-Dateien rendern, die gemäß dem XML 1.1-Standard geschrieben wurden

Firefox zeigt eine Fehlermeldung an, die auf die Version 1.1im XML-Prolog verweist .

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

Der Internet Explorer zeigt nur eine leere Seite an.

Wenn Sie ein Softwareentwickler sind, beachten Sie, dass der Mangel an XML 1.1-Unterstützung nicht nur auf Webbrowser beschränkt ist. Es gibt auch einen Mangel an Unterstützung für XML 1.1 in vielen Programmiersprachen. (dh der Standard-DOM-Parser von Java 8 unterstützt XML 1.1 nicht). Sie können es insgesamt vorziehen, sich an XML Version 1.0 zu halten, wenn Sie die Wahl haben.

Sie können den Prolog natürlich auch einfach aus Ihrer XML-Datei entfernen. Das wird aber nicht immer funktionieren. (dh XML-Knoten können bestimmte Steuerzeichen enthalten, die in Version 1.0 verboten waren).

bvdb
quelle