Hi,
Ich versuche gerade aus einer XML Datei mittels Javascript ein paar Informationen auszulesen! Das funktioniert auch ganz gut, zumindest im Firefox 3 und Opera 9.5. Der IE macht leider wieder was er will:
Also mal Schritt für Schritt. Ich bekomme über AJAX einen String, der den Inhalt einer XML-Datei enthält. Daraus lösche ich erstmal den Kopf, also dieses <?xml .... ?> und versuche den restlichen String in einen DOM-Knoten umzuwandeln, indem ich zb. ein DIV-Element erzeuge, den String als innerHTML einfüge und dann die childNodes auslese.
function string2DOM(string)
var container = new Element('div', {
'html': string
});
//Whitespace entfernen
for (var i=0; i<container.childNodes.length; i++)
{
var node = container.childNodes[i];
if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
node.dispose(); //Dispose ist ne Mootools Funktion, die das Element entfernt
}
if(container.childNodes.length == 1)
{
return container.childNodes[0].dispose();
}
else
{
var array = new Array();
for(var i = 0; i < container.childNodes.length; i++)
{
array.push(container.childNodes[i]);
}
}
return array;
}
Das Problem dabei ist, dass die XML-Datei nicht nur HTML-Gültige Tags, sondern auch sowas wie <layout> oder so enthält, die leider vom IE7 einfach nicht beachtet werden. Aus einem String:
<layout>
<markup>
<div>
<p></p>
</div>
</markup>
<layout>
wird beim IE
<div>
<p></p>
</div>
Gibt es irgendeine Möglichkeit das zu umgehen oder den String irgendwie anders in einen DOM Knoten zu verwandeln?
Mit der XML-Rückgabe von AJAX kann ich bis jetzt nichts anfangen, weil ich Mootools (http://www.mootools.net) verwende und die Element-Funktionen davon nur auf DOM-Elemente und nicht auf diese XML-Rückgabe funktionieren!
MfG Niko