Trochę utknąłem próbując dołączyć wiele przestrzeni nazw do elementu XML za pośrednictwem javascript w różnych przeglądarkach .. Próbowałem na kilkanaście różnych sposobów bezskutecznie. . :(ja zazwyczaj przy użyciu javascript zwykły stary, ale przez wzgląd na utrzymanie tego przykładu krótki, to w jaki sposób to, co robię będzie się odbywać za pomocą jQuery:Jak dodać dodatkowe atrybuty przestrzeni nazw xmlns do XML w javascript
var soapEnvelope = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"></soapenv:Envelope>';
var jXML = jQuery.parseXML(soapEnvelope);
$(jXML.documentElement).attr("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
zarówno Chrome i FF, to działa zgodnie z oczekiwaniami, dając taki wynik:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
Ale w IE9, otrzymuję wynik tak:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:NS1="" NS1:xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
I nie mogę znaleźć sposób na dodanie tego atrybutu namespace bez IE9 dodając ten przedrostek NS1 do moich katalogów. Również jeśli spróbuję przekazać ten wynik z powrotem do $ .parseXML (wynik), otrzymam zniekształcony wyjątek XML.
Czy nie rozumiem, że ma coś wspólnego ze sposobem zadeklarowania przestrzeni nazw w IE, czy też ktoś może zaproponować sposób uzyskania spójnego wyniku w różnych przeglądarkach?
góry dzięki
+1. W każdym razie powinieneś zmodyfikować test przeglądarki. Obecnie wolisz własne podejście, ale IE 9+ obsługuje 'window.DOMParser', który jest domyślnie jQuery wewnętrznie. Nie rób 'if ($ .browser.msie)', do 'if (! Window.DOMParser)'. Poniżej znajduje się ładny opis tworzenia deklaracji przestrzeni nazw w MSXML: http://msmvps.com/blogs/martin_honnen/archive/2009/04/15/creating-xml-with-namespaces-with-javascript-and- msxml.aspx – Tomalak
Cheers @Tomalak – 2potatocakes
Bez jQuery: var objXmlDomParser = new DOMParser(); xmlDOM = objXmlDomParser.parseFromString (soapEnvelope, "text/xml"); xmlDOM.documentElement.setAttribute ("xmlns: xsd", "http://www.w3.org/2001/XMLSchema"); –