• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

document.open um XML anzuzeigen

NetAktiv

Senior HTML'ler
Hallo,

der JavaScript Code
Code:
           var oWindow = window.open();
            oWindow.document.open("text/html", "replace");
            oWindow.document.write(my-html-code);
            oWindow.document.close();
funktioniert ja einwandfrei. Versuche ich das gleiche aber mit Mime="text/xml" und xml-Text, dann bleibt der Browser (IE) leer. Wenn ich mir den Quellcode des neuen Fensters ansehe, dann passt aber alles, aber scheinbar wird es nicht als XML interpretiert, sondern als HTML und die so unbekannten Tags werden nicht dargestellt.

Was muss ich tun, damit der IE so reagiert, als kämen die Daten von einer Datei oder einem Web-Server.

Grüße, Rainer
 
Werbung:
Nun habe ich noch eine Weile geforscht und fand, dass es wohl nicht so einfach geht. Die folgenden Möglichkeiten scheint es zu geben:
  1. XML durch einfache replaces von Sonderzeichen (wie < oder > oder \n) in HTML Entities (wie &lt; oder &gt; oder <br />) in HTML umzuwandeln und den dann als HTML-Body anzuzeigen.
  2. Ähnliche Idee, komplexeres Vorgehen. Extern eine generische XSL ablegen (so etwas soll in der msxml3.dll verborgen sein), diese einlesen und mit der im Browser integrierten XSLT Engine die Konvertierung von XML nach HTML selbst machen.
  3. XML auf dem Server ablegen, einen Link zur Datei erzeugen und dann document.open(URL).
Nur bei der 3. Lösung hat man dann das nette Verhalten für Tree-Views im Browser, aber man braucht auch Zugriff auf den Server.

Eventuell findet ja doch noch jemand eine einfachere Lösung, die muss lediglich mit IE8.0 oder später funktionieren.

Grüße, Rainer
 
Zuletzt bearbeitet:
Die Methode über XSLT ist imho die gebräuchlichste. Ich käme nicht auf die Idee dafür JavaScript einzusetzen.
 
Werbung:
Hallo Threadi,
kommt drauf an, welche Qualität man braucht. Wenn man XML-Fließtext hat und dann wie vorgeschlagen ersetzt und dann vor der Ersetzung noch >< durch >\n< ersetzt und nach der Ersetztung noch \n durch <br/>, dann sieht das schon mal halbwegs aus. Klar, Einrückungen oder Hervorhebungen von Ebenen hat man nicht. Das Problem mit XSLT scheint auch, eine geeignete generische XSL-Datei zu finden. Extrahiert man die des IE, wie oft im Netz vorgeschlagen aus der msxml3.dll, dann findet man, dass die nicht mehr unterstützt wird (zumindest sagen XML Notepad oder IE das, wenn man in der XML einen Verweis auf diese defautss.xsl macht). Ich habe eine schnelle Lösung gebraucht in einer Entwicklungsumgebung und daher 3) implementiert. Ich musste lediglich in der XML noch das encoding UTF nach ISO ändern, da mein IIS-ASP (mit FSO) auch dieses Format auf die Festplatte schreibt.
Gruß, Rainer
 
Wieso musst Du da Sachen ersetzen? Musste ich nie. Einen Konverter sollten Zeilenumbrüche nicht interessieren. Auch ein HTML-Dokument könnte komplett auf einer Zeile geschrieben sein, der Browser kann ebenso damit umgehen.

XSL-Dateien kann man ebenfalls selbst erstellen. Ich habe lange schon keine generische XSL mehr verwendet, vor allem weil diese oft nur für bestimmte Konverter gedacht sind (XSLTfast und fop z.B.).
 
wenn ich XML Quell-Text wie <root><z1>hallo1</z1><z2>hallo2</z2></root> sehen will als

<root>
<z1>hallo1</z1>
<z2>hallo2</z2>
</root>

dann muss ich es umwandeln in &lt;root&gt;<br/>&lt;z1&gt;hallo1&lt:/z1gt;<br/>&lt;z2&gt;hallo2&lt:/z2gt;<br/>&lt;/root&gt; also irgendwie ein paar Zeilenumbrüche rein bekommen.

Davon abgesehen ignorierst du scheinbar völlig den Hintergrund. Wenn ich sage, ich brauche eine schnelle funktionale Lösung für eine Entwicklungsumgebung, dann werde ich einen Teufel tun und mich in XSLT einarbeiten und eine eigene generische XSL schreiben und Testen, die ähnlich Funktionen wie der IE bietet. Dann wird der Aufwand nämlich nicht im Stunden, sondern Tagebereich liegen.
 
Werbung:
Zurück
Oben