SOAPWebサービスと通信するJavaScriptライブラリを実装しています。XMLHttpRequestを使用して、リクエストを実行し、レスポンスを受信します。SOAP応答は、複数の名前空間に大きく依存しています。
Internet Explorerのすべてのバージョンを除くすべての主要なブラウザーで、およびを使用getElementsByTagNameNS()
しgetAttributeNS()
て応答をトラバースおよび解析できます。ただし、InternetExplorerではありません。
今、私はいくつかのドキュメント(http://msdn.microsoft.com/en-us/library/ms756048(VS.85).aspx)を読みました。これは、最初SelectionNamespace
にDOMドキュメント。これは、考慮したい名前空間URI(これは妥当です)と、ドキュメントがたまたま使用する名前空間プレフィックスの両方を知っている場合にのみ機能します。
この最後の要件は完全に不合理に思えます-どの名前空間プレフィックスがたまたま使用されているかをどのように知る必要がありますか?最初は、ドキュメントを完全にトラバースして、すべての名前空間とプレフィックスを追跡できると思いましたが、問題は、プレフィックスとURIの関連付けがドキュメント全体で固定されておらず、どの要素でもドキュメント内のどこでもそれらの関連付けを再定義できることです。私が考えたもう1つのアプローチは、コンテキストノードのすべての祖先を検索して、XPath式を評価する前に、そのノードで有効なプレフィックス/名前空間の組み合わせを見つけることです。これは、すべてのXPath式が並列ではなく直列に実行されます。
もっと良い方法はありますか?IEで名前空間対応のDOMトラバーサルを行うために人々は何を使用していますか?