使用_jQuery_在浏览器中处理_XML.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:17 大小:324KB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

使用_jQuery_在浏览器中处理_XML.doc

使用_jQuery_在浏览器中处理_XML.doc

预览

免费试读已结束,剩余 7 页请下载文档后查看

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

流行的jQueryJavaScript库以其能够使用HTML而著称,但您还可以用它来处理XML,如果您非常小心并且知道它的缺陷。本文展示了如何使用jQuery来处理AtomWeb提要格式。Web提要XML可能是最广泛的XML格式,并且是Web上的XML的主要发展方向。但是大部分这种格式都使用XML名称空间,这些名称空间导致许多流行的JavaScript库(包括jQuery)出现问题。XML是Web的SGML,但是它还没有像XML社区那样在Web上引人注目。XML在Web上最突出的成就——XHTML——已经被政治和委员会设计所纠缠,并且其他雄心壮志、技术良好的规范——例如XForms和SVG——一直受到低使用率的困扰。有时候XML会在意想不到的方面在Web上获得成功,包括XML格式的Web提要(例如RSS类型和Atom)的流行。和其他Web上的技术一样,Web上的XML以浏览器为中心,但是大部分关于在Web上处理XML的讨论都集中在服务器端。在developerWorks的FirefoxandXML系列(参见HYPERLINK"http://www.ibm.com/developerworks/cn/xml/x-feedjquery/"\l"resources"参考资料)中,我介绍了几种在Firefox浏览器中使用XML的方法。遗憾的是,跨浏览器处理XML甚至比跨浏览器处理HTML更加奇怪,这就是为什么这么多Web上的XML处理坚持相对安全的服务器端领域的部分原因。许多动态HTML开发人员厌烦了跨浏览器的痛苦和浏览器之间脚本编写的怪癖。几种出色的JavaScript库的出现使开发人员的工作更加轻松。这些库中最流行一种就是jQuery,developerWorks上有几篇文章已经对它进行了介绍。如果您知道如何绕开这些巨大的陷阱,您还可以使用jQuery来处理XML。在本文中,我将展示如何在实际场景中联合使用jQuery和XML,如何使用AtomWeb提要,介绍一种在jQuery中处理XML的实用模式,并解决不幸遇到的实际问题。您需要对XML、XML名称空间、HTML、JavaScript和jQuery库有基本的了解(请参阅HYPERLINK"http://www.ibm.com/developerworks/cn/xml/x-feedjquery/"\l"resources"参考资料了解更多介绍jQuery的文章)。XML名称空间的问题我将首先介绍最严重的问题。jQuery并不能完全解决XML名称空间问题。这个众所周知的问题由来已久,人们尝试了各种解决方案,但结果都不太令人满意。理想的解决方案可能是利用jQuery支持CSSLevel3名称空间选择器(仍然是一个W3C工作草案,请参阅HYPERLINK"http://www.ibm.com/developerworks/cn/xml/x-feedjquery/"\l"resources"参考资料),它将添加一个新的选择器,如下所示:@namespaceexurl(http://example.com);ex|quote{font-weight:bold}第一行是http://example.com名称空间的前缀声明,第二行是一种使用新的名称空间组件的类型选择器,其中用竖线符号分隔已声明的前缀和本地名称。不幸的是,jQuery并不支持这种方法,因此人们采取了各种方法来处理名称空间问题。伪装前缀的重要性一种最常见的黑客方法是在jQuery中处理XML和名称空间时忽略名称空间,并选择完整的qname(前缀和本地部分)。$(xml).find("x\\:quote").each(function(){//processeachnode});该代码通过jQuery的节点名称概念选择,即DOMnodeName属性。它包含一个冒号,是jQuery选择器保留的符号,并且必须使用反斜杠进行转义。反斜杠是JavaScript脚本保留的符号并且必须是一对。这种黑客方法在使用不同前缀的名称空间等效文档中无法使用。使用属性过滤器据说有人成功地使用过以下方法的变体,即在伪属性nodeName上使用jQuery属性过滤器:$(xml).find("[nodeName=x:quote]").each(function(){//processeachnode});使用jQuery1.3.x之前的版本,您需要在nodeName前面加上@。但是,这样做与上一节HYPERLINK"http://www.ibm.com/developerworks/cn/xml/x-feedjquery/"\l"pretend"伪装前缀的重要性中提到的方法有