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

使用 jQuery 在浏览器中处理 XML

 2010-01-20 00:00:00 来源:WEB开发网   
核心提示: XML 名称空间的问题我将首先介绍最严重的问题,jQuery 并不能完全解决 XML 名称空间问题,使用 jQuery 在浏览器中处理 XML(2),这个众所周知的问题由来已久,人们尝试了各种解决方案,这样做与上一节 伪装前缀的重要性 中提到的方法有着相同的基本问题,它将破坏许多真实的名称空间场

XML 名称空间的问题

我将首先介绍最严重的问题。jQuery 并不能完全解决 XML 名称空间问题。这个众所周知的问题由来已久,人们尝试了各种解决方案,但结果都不太令人满意。理想的解决方案可能是利用 jQuery 支持 CSS Level 3 名称空间选择器,它将添加一个新的选择器,如下所示:

@namespace ex url(http://example.com); 
ex|quote { font-weight: bold } 

第一行是 http://example.com 名称空间的前缀声明,第二行是一种使用新的名称空间组件的类型选择器,其中用竖线符号分隔已声明的前缀和本地名称。不幸的是,jQuery 并不支持这种方法,因此人们采取了各种方法来处理名称空间问题。

伪装前缀的重要性

一种最常见的黑客方法是在 jQuery 中处理 XML 和名称空间时忽略名称空间,并选择完整的 qname(前缀和本地部分)。

  $(xml).find("x\\:quote").each(function() { 
   //process each node 
  }); 

该代码通过 jQuery 的节点名称概念选择,即 DOM nodeName 属性。它包含一个冒号,是 jQuery 选择器保留的符号,并且必须使用反斜杠进行转义。反斜杠是 JavaScript 脚本保留的符号并且必须是一对。这种黑客方法在使用不同前缀的名称空间等效文档中无法使用。

使用属性过滤器

据说有人成功地使用过以下方法的变体,即在伪属性 nodeName 上使用 jQuery 属性过滤器:

  $(xml).find("[nodeName=x:quote]").each(function() { 
   //process each node 
  }); 

使用 jQuery 1.3.x 之前的版本,您需要在 nodeName 前面加上 @。但是,这样做与上一节 伪装前缀的重要性 中提到的方法有着相同的基本问题。它将破坏许多真实的名称空间场景。我尝试了以下变体,这种方法更合理:

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

Tags:使用 jQuery 浏览器

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