複数のブラウザー間で JavaScript を使用して複数の名前空間を XML 要素にアタッチしようとして、少し行き詰まりました。私は約十数の異なる方法を試しましたが、役に立ちませんでした。
私は通常、プレーンな古い JavaScript を使用しますが、この例を短くするために、これは私がやっていることを jQuery 経由で行う方法です:
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");
Chrome と FF の両方で、これは期待どおりに機能し、次のような結果が得られます。
<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(result) に戻そうとすると、不正な形式の XML 例外が発生します。
名前空間が IE で宣言される方法と関係があることを誤解していますか、それともブラウザ間で一貫した結果を得る方法を誰かが提案できますか?
前もって感謝します