2

我正在实现一个与 SOAP 网络服务对话的 javascript 库。我使用 XMLHttpRequest 来做请求和接收响应。SOAP 响应严重依赖多个名称空间。

对于所有主流浏览器,除了所有版本的 Internet Explorer,我都可以使用getElementsByTagNameNS()andgetAttributeNS()来遍历和解析响应。但不在 Internet Explorer 中。

现在,我已经阅读了一些文档(http://msdn.microsoft.com/en-us/library/ms756048(VS.85).aspx),这些文档表明如果您首先设置SelectionNamespace属性,您实际上可以如何使用命名空间感知 XPath DOM 文档。仅当您知道要考虑的名称空间 uri(这是合理的)以及文档碰巧使用的名称空间前缀时,这才有效。

最后一个要求似乎完全不合理——我怎么知道碰巧使用了哪些命名空间前缀?我首先认为我可以完全遍历文档并跟踪所有命名空间和前缀,但问题是前缀/uri 关联对于整个文档来说并不是固定的,任何元素都可能在文档中的任何位置重新定义这些关联。我想到的另一种方法是在评估我的 XPath 表达式之前搜索上下文节点的所有祖先,以发现哪些前缀/命名空间组合对该节点有效,我认为如果我可以保证所有 XPath 表达式都是串行执行而不是并行执行。

有没有更好的办法?人们在 IE 中使用什么来进行命名空间感知 DOM 遍历?

4

1 回答 1

0

他们可能在遍历之前正在使用正则表达式来清除命名空间。

如果客户端脚本中基于标准的 xml 解析是您所追求的,那么您可能会从XML4Script中获得一些好处。它需要一个不显眼的大修,但如果你能处理窗户里的噪音,它可能会有所帮助。

于 2010-02-12T15:57:24.587 回答