2014-01-08 5 views
5

Ich habe einen XML-String von einem gwt-RPC-Aufruf erhalten, den ich als XML-Seite in einen Iframe einbetten möchte. Was ich zu sehen hoffe, ist der hübsch gedruckte XML-Baum mit seiner zusammenklappbaren Struktur, die die Browser von normalen HTML-Inhalten umgeben. Also eine Inpage-Ansicht der XML.XML aus einem String im iframe als XMLTree anzeigen

Ich kann das srcdoc-Attribut von iframes nicht verwenden, da es nicht vom IE8 unterstützt wird (frühestmöglich zur Unterstützung) und das nächste Problem ist, dass keine Javascript-Bibliotheken erlaubt sind.

Was ich versucht:

var iframeDocument = document.querySelector('#foo').contentWindow.document; 
iframeDocument.open('text/xml', 'replace'); // Also tested without Args 
iframeDocument.write(xmlcontent); 
iframeDocument.close(); 

Während Firefox atleast die Tags XML zeigt aber unformatiert und ohne Baum Chrome und IE entfernen Sie die HTML-Tags und nur Lineup der Inhalt.

Nextthing Ich habe versucht, ist

<iframe id="xmlframe" src="test.xml" name="thexml"> 

Hier Firefox macht genau das, was ich will, während die anderen die gleiche Leistung wie vor produzieren. Also das funktioniert auch nicht und ich habe nicht die test.xml Ich habe nur eine String-Variable zusammen mit anderen Sachen zurückgegeben ...

Ist das überhaupt möglich? Wenn nicht, wie würden Sie ein neues Popup mit der XML-Zeichenfolge als Inhalt öffnen?

+0

noch eine Lösung auf diesem? – lbstr

+2

Nein, ich habe keine Lösung dafür gefunden. Jeder Browser behandelt dies anders und es scheint nicht möglich zu sein, den Browser zu zwingen, ein XML als XML in einem Iframe zu analysieren. Ich habe auch mit Daten in iframes getestet, um dies zu erreichen. Also habe ich einen normalen XML-Download gefunden, der normalerweise in einem Popup-Fenster geöffnet wird. –

+0

Wie wäre es mit '<' and '>' von '<' und '>'? –

Antwort

1

Wie L.Monty sagte in den Kommentaren i mit &lt; und jeder > mit &gt; so jede < in Ihrer XML-String ersetzen würde, dass der Browser nicht versucht, alle Tags im HTML-Format zu interpretieren.

Für Ihre baumartige Ansicht würde ich meine eigene Funktion schreiben, die nach jedem XML-End-Tag eine Pause hinzufügt + eine Menge an Leerzeichen, die Sie in einer Variablen für jedes folgende XML-open-Tag zählen können. Vergessen Sie nicht, diesen Zähler für jedes XML-Close-Tag ebenfalls zu reduzieren.

Verwandte Themen