2008-09-04 6 views
25

Ich habe ein XML-Objekt (geladen mit XMLHTTPRequest 's responseXML). Ich habe das Objekt geändert (mit jQuery) und möchte es als Text in einer Zeichenfolge speichern.Wie serialisiere ich ein DOM zu XML-Text mit JavaScript in einem Cross-Browser-Verfahren?

Es gibt anscheinend eine einfache Möglichkeit, es in Firefox et al zu tun:

var xmlString = new XMLSerializer().serializeToString(doc); 

(von rosettacode)

Aber wie man es in IE6 und anderen Browsern macht (ohne, von Natürlich, brechen Firefox)?

Antwort

35

Sie können doc.xml im Internet exlporer verwenden.

Sie werden so etwas wie dieses:

function xml2Str(xmlNode) { 
    try { 
     // Gecko- and Webkit-based browsers (Firefox, Chrome), Opera. 
     return (new XMLSerializer()).serializeToString(xmlNode); 
    } 
    catch (e) { 
    try { 
     // Internet Explorer. 
     return xmlNode.xml; 
    } 
    catch (e) { 
     //Other browsers without XML Serializer 
     alert('Xmlserializer not supported'); 
    } 
    } 
    return false; 
} 

es here gefunden.

+6

XMLSerializer() würde in IE9 funktionieren. –

+0

Danke ... Ich fand das nach zwei Tagen Suche endlich. (Es hat eine Weile gedauert, bis ich feststellte, dass .xml einfach nicht für FF/Chrome da war. Ich hatte angenommen, dass ich etwas falsch mache.) –

+0

Webkit hat derzeit einen Fehler (zB in Chrome 19) und gibt kein korrektes XML zurück: xmlNode = Dokument.createElement ('img'); xmlNode.src = "test.png" xmlNode.alt = "Test" (neuer XMLSerializer()). SerializeToString (xmlNode); Rückgabe: "test" – cburgmer