Как сделать обход пространства DOM в документах IE6..IE8 xml? - PullRequest
2 голосов
/ 12 февраля 2010

Я реализую библиотеку javascript, которая взаимодействует с веб-сервисом SOAP. Я использую XMLHttpRequest для выполнения запросов и получения ответов. Ответы SOAP сильно зависят от нескольких пространств имен.

Для всех основных браузеров, кроме всех версий Internet Explorer, я могу использовать getElementsByTagNameNS() и getAttributeNS() для обхода и анализа ответа. Но не в Internet Explorer.

Теперь я прочитал некоторую документацию (http://msdn.microsoft.com/en-us/library/ms756048(VS.85).aspx), в которой указано, как на самом деле можно использовать XPath с поддержкой пространства имен, если вы сначала задаете свойство SelectionNamespace документа DOM. Это работает, только если вы знаете оба пространства имен Uris, который вы хотите учесть (что разумно), а также префиксы пространства имен, которые документ использует.

Последнее требование кажется совершенно необоснованным - откуда мне знать, какие префиксы пространства имен используются? Сначала я подумал, что могу полностью пройти по документу и отслеживать все пространства имен и префиксы, но проблема в том, что связь префикса / uri не зафиксирована для документа в целом, любой элемент может переопределить эти ассоциации в любом месте документа. Другой подход, о котором я подумал, - это поиск по всем предкам узла контекста, чтобы выяснить, какие комбинации префикса / пространства имен действуют для этого узла, до оценки моего выражения XPath, и я думаю, что это сработает, если я смогу гарантировать, что все выражения XPath соответствуют выполняется последовательно, а не параллельно.

Есть ли лучший способ? Что люди используют для обхода DOM с учетом пространства имен в IE?

1 Ответ

0 голосов
/ 12 февраля 2010

Они, вероятно, регулярно проверяют пространства имен перед обходом.

Если вам нужен XML-анализ на основе стандартов в клиентском скрипте, вы можете получить некоторое преимущество от XML4Script . Он нуждается в ненавязчивом ремонте, но если вы справитесь с шумом в окне, это может помочь.

...