javascriptを使用して複数の名前空間をXML要素にアタッチしようとしています。 私は役に立たない方法を試しました。 。:( 私は通常使用している無地のJavaScript古いが短いこの例を維持するために、これは私がやっているjQueryを介して行われることになるかです:xmlns名前空間の属性をjavascriptのXMLに追加する方法
ChromeとFFの両方で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");
、この期待通りの結果が得られます。
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" />
しかしIE9で、私はこのような結果が得られます。
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:NS1="" NS1:xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
そして、私はIE9は私の名前空間には、このNS1プレフィックスを追加することなく、この名前空間属性を追加する方法を見つけることができません。また、この結果を$ .parseXML(結果)に戻してみると、不正な形式のXML例外が発生します。
名前空間がIEで宣言されている方法とは何かを誤解していますか、誰かがブラウザ間で一貫した結果を得る方法を提案できますか?誰がこれに同様の問題に遭遇した場合には、事前
+1。とにかく、ブラウザのテストを変更する必要があります。現時点では独自の方法が好まれていますが、IE 9+では 'window.DOMParser'がサポートされています。これはjQueryのデフォルト設定です。 'if($ window.msie)'をしないで 'if(!window.DOMParser)'を実行します。また、ここでは、MSXMLで名前空間宣言を作成することについて素早くまとめています:http://msmvps.com/blogs/martin_honnen/archive/2009/04/15/creating-xml-with-namespaces-with-javascript-and- msxml.aspx – Tomalak
乾杯@Tomalak – 2potatocakes
jQueryを使用しない場合:var objXmlDomParser = new DOMParser(); xmlDOM = objXmlDomParser.parseFromString(soapEnvelope、 "text/xml"); xmlDOM.documentElement.setAttribute( "xmlns:xsd"、 "http://www.w3.org/2001/XMLSchema"); –