XML richtig verarbeiten

Ich weiß nicht mehr weiter - google auch nicht^^

Ich arbeite gerade mit Ajax und lade mir XML-Dateien der folgenden Form nach:

<?xml version="1.0" encoding="UTF-8"?>elemIdappend 
 das ist die neue box 

Nun möchte ich den Inhalt des modul-Knotens an einer beliebigen Stelle in einer HTML-Seite platzieren. Aber wie stelle ich das an, dass es auch in allen Browsern funktioniert?!

Mein Ansatz war:

var xml = ajax.responseXML;
var modul = xml.getElementsByTagName("modul")[0];
var target = document.getElementById("target");
target.appendChild(modul.childNodes[0]);

Wenn man davon absieht, dass der Firefox unnötige [object Text] Elemente als childNodes im modul-Knoten der XML findet, klappt das mit diesem Browser schon ganz gut.
Der Internet Explorer macht bei dieser Aktion jedoch nicht mit und textet mich damit zu: „Error: Schnittstelle nicht unterstützt“. Wer weiß wie das besser geht?

Ich hätte da sogar einen weiteren Ansatz, kenne mich aber in JavaScript zu wenig aus um den umzusetzen: Im Gegensatz zum Firefox kann der Internet Explorer den Inhalt des modul-Knotens als Text ausgeben mit:

var string = modul.childNodes[0] **.xml** ;

Gibt es in JavaScript eine Funktion, die mir diesen Text in ein DOM-Element umwandelt? Google weiß auch nix. Und ja, ich brauch das ganze als DOM-Element. Weil wenn ich einen neuen Knoten in Textform unter ein halbausgefülltes Formular nachlade mit:

var string = modul.childNodes[0].xml;
var div = document.getElementById("elementMitFormularDrin");
div.innerHTML = div.innerHTML + string;

dann gehen die bisherigen Formulareingaben verloren - und das wollen wir ja nicht^^

Also, wer hat nen guten Rat für mich?

Hallo,

Nodes aus fremden Dokumenten muss man zuvor eigentlich importieren:

var foreignDOM = ...; // fremdes Dokument als DOM
var foreignNode = foreignDOM...; // irgendein Node davon
var targetNode = document...; // irgendein eigenes Node

var newNode = document.importNode(foreignNode);
targetNode.appendChild(newNode);

Firefox 3 macht das offenbar automatisch, IE kann es gar nicht, ABER:

Der beste Weg im IE ist, mittels einer Funktion den Dokumentbaum im aktuellen Dokument auf Basis des fremden Dokuments nachzubauen, siehe (Suchen nach „My final solution“).

Wichtig ist auch, dass das fremde Dokument trotzdem für HTML-Elemente den HTML-Namespace verwendet. Dir ist vielleicht aufgefallen, dass dein p-Element nicht wie ein normales p gestylt war, auch Grafiken und Input-Elemente würden nicht funktionieren, da er die nicht als HTML-Elemente erkennt, auch wenn sie genau so heißen.

Im Klartext: es müsste so lauten:

<?xml version="1.0" encoding="UTF-8"?>xmlns:ht="http://www.w3.org/1999/xhtml"\>
 elemIdappendht:div id="newBox"\>
 ht:stuck\_out\_tongue:\>das ist die neue box **ht:** p\>
**ht:** div\>