WEB开发网
开发学院网页设计JavaScript 使用 jQuery 在浏览器中处理 XML 阅读

使用 jQuery 在浏览器中处理 XML

 2010-01-20 00:00:00 来源:WEB开发网   
核心提示: $(xml).find("[namespaceURI='http://example.com'][localName='quote']").each(function(){//processeachnode});可惜这样不起作用,寻找一个好的插

  $(xml).find("[namespaceURI='http://example.com'][localName='quote']") 
  .each(function() { 
   //process each node 
  }); 

可惜这样不起作用。

寻找一个好的插件

这种混乱不完全是 jQuery 的错。DOM 为寻找节点提供了有效的方法:getElementsByTagName 和 getElementsByTagNameNS。后者旨在感知名称空间,接受名称空间的 URI 并忽略前缀,但遗憾的是,尽管其他浏览器都支持它,但 Microsoft® Internet Explorer® 除外。然而,jQuery 的目的是处理此类浏览器问题,以便消除人们的此类烦恼。一种可能的、牵强的理由是,jQuery 很大程度上以 CSS 作为其选择器的基础,并且即使是 W3C CSS Level 3 名称空间选择器也无法使它通过工作草案阶段。jQuery bug #155,“Get Namespaced Elements in XML Documents”,涵盖了这些问题,但是问题在 3 年之内没有得到解决。

Ryan Kelly 遇到此问题并做了一次大胆的尝试,为 XML Namespace Selector 创建了一个 jQuery 插件 jquery.xmlns.js。它试图支持以下代码。

$.xmlns["ex"] = "http://example.com"; 
$(doc).find("ex|quote").each(...); 

第一行是对该插件的全局名称空间声明 — 由于底层 jQuery 机制的局限性。它的确用典型的 jQuery 用语为名称空间范围提供一个非全局块。 遗憾的是,我在使用这种扩展时成败参半。我希望它能够改变,并最终找到合适的方法进入 jQuery 。

一个更简单的插件

我最终选择的解决方案是创建一个简单插件,它不使用 jQuery 选择器做任何特殊工作,而是添加一个新的过滤器。您可以直接传递一个名称空间和本地名称到该过滤器,从而使结果集与节点匹配。请您按以下方法使用它:

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 jQuery 浏览器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接