我正在实现一个与SOAP Web服务对话的javascript库。我使用XMLHttpRequest来做请求并接收响应。 SOAP响应严重依赖于多个名称空间。
对于所有主流浏览器,除了所有版本的Internet Explorer,我都可以使用getElementsByTagNameNS()
和getAttributeNS()
来遍历和解析响应。但不是在Internet Explorer中。
现在,我已经阅读了一些文档(http://msdn.microsoft.com/en-us/library/ms756048(VS.85).aspx),它们表明如果首先设置DOM文档的SelectionNamespace
属性,实际上如何使用名称空间感知XPath。这只有在您知道要考虑的命名空间uris(这是合理的)以及文档恰好使用的命名空间前缀时才有效。
这最后一个要求似乎完全不合理 - 我怎么知道碰巧使用了什么名称空间前缀?我首先想到我可以完全遍历文档并跟踪所有名称空间和前缀,但问题是前缀/ uri关联对于整个文档来说并不固定,任何元素都可以在文档中的任何位置重新定义这些关联。我想到的另一种方法是在评估我的XPath表达式之前搜索上下文节点的所有祖先以发现哪个前缀/命名空间组合对该节点有效,并且我认为如果我能保证所有XPath表达式都是连续执行而不是并行执行。
有更好的方法吗?人们在IE中使用什么做名称空间感知的DOM遍历?
答案 0 :(得分:0)
它们可能是正则表达式,在遍历之前将名称空间排除在外。
如果客户端脚本中基于标准的xml解析是您所追求的,那么您可能会从XML4Script获得一些里程数。它需要一次不引人注目的大修,但如果你能处理窗户中的噪音,它可能会有所帮助。