代码之家  ›  专栏  ›  技术社区  ›  Roland Bouman

如何在IE6..IE8 XML文档中进行命名空间感知的DOM遍历?

  •  2
  • Roland Bouman  · 技术社区  · 15 年前

    我正在实现一个与SOAP Web服务对话的JavaScript库。我使用xmlhttpRequest来执行请求和接收响应。SOAP响应严重依赖于多个名称空间。

    对于所有主要浏览器,除了Internet Explorer的所有版本,我可以使用 getElementsByTagNameNS() getAttributeNS() 遍历和分析响应。但不是在Internet Explorer中。

    现在,我读了一些文件( http://msdn.microsoft.com/en-us/library/ms756048(VS.85).aspx )这表示如果首先设置 SelectionNamespace DOM文档的属性。只有当您知道要考虑的名称空间URI(这是合理的)以及文档碰巧使用的名称空间前缀时,这才有效。

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

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   Sky Sanders    15 年前

    它们可能是在遍历之前对名称空间进行regex咀嚼。

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