2008-09-04 11 views
25

Mam obiekt XML (ładowany przy użyciu XMLHTTPRequest 's responseXML). Zmodyfikowałem obiekt (używając jQuery) i chciałbym zapisać go jako tekst w ciągu znaków.Jak serializować tekst DOM na XML za pomocą JavaScript, w sposób krzyżowy?

Jest pozornie prosty sposób zrobić to w Firefox et al:

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

(od rosettacode)

Ale w jaki sposób można to zrobić w IE6 i innych przeglądarek (bez, z oczywiście, łamanie Firefoksa)?

Odpowiedz

35

Możesz użyć doc.xml w internetowym exlporer.

Dostaniesz coś takiego:

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; 
} 

Znaleziono go here.

+6

XMLSerializer() będzie działał w IE9. –

+0

Dzięki ... W końcu znalazłem to po dwóch dniach poszukiwań. (Zajęło mi trochę czasu, aby zdać sobie sprawę, że .xml po prostu nie było dla FF/Chrome, założyłem, że robię coś nie tak.) –

+0

Webkit ma obecnie błąd (np. W Chrome 19) i nie zwróci poprawnego XML: xmlNode = document.createElement ('img'); xmlNode.src = "test.png" xmlNode.alt = "test" (nowy XMLSerializer()). SerializeToString (xmlNode); Powraca: "test" – cburgmer

Powiązane problemy