博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jQuery静态方法parseXML使用和源码分析
阅读量:7239 次
发布时间:2019-06-29

本文共 2067 字,大约阅读时间需要 6 分钟。

 

jQuery.parseXML( data ) 接受一个格式良好的 XML 字符串,返回解析后的 XML 文档。

方法 jQuery.parseXML() 使用浏览器原生的 XML 解析函数实现。

在 IE 9+ 和其他浏览器中,会使用 DOMParser 对象解析; 在 IE 9 以下的浏览器中,则使用 ActiveXObject 对象解析

源码分析

// Cross-browser xml parsing    parseXML: function( data ) {        var xml, tmp;        try {            if ( window.DOMParser ) { // Standard                tmp = new DOMParser();                xml = tmp.parseFromString( data , "text/xml" );            } else { // IE                xml = new ActiveXObject( "Microsoft.XMLDOM" );                xml.async = "false";                xml.loadXML( data );            }        } catch( e ) {            xml = undefined;        }        if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {            jQuery.error( "Invalid XML: " + data );        }        return xml;    },

首先针对IE(9以下)和W3C标准进行区分处理,对于W3C浏览器而言采用标准的解析对象DOMParser,下面针对此对象进行扩展

//DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。//要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法:var doc = (new DOMParser()).parseFromString(text)
parseFromString定义如下
//text 参数是要解析的 XML 标记//contentType 是文本的内容类型。可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"parseFromString(text, contentType)

IE采用的ActiveXObject对象解析xml,这个特定于 IE 的方法解析指定的 XML 文本串,然后在当前文档对象中构建一棵 DOM 节点树,而丢弃此前存在于文档中的任何节点。

这个方法在表示 HTML 文档的Document对象上并不存在。在调用 loadXML() 之前,通常创建一个新的、空的 Document对象来保存解析的内容:

var doc = new ActivexObject ("MSXML2.DOMDocument");doc.loadXML(markup);

IE9以下浏览器解析后返回的是Document对象 失败了此对象为null

IE9以上的解析失败会报错执行catch语句把xml赋值为undefined

在 IE 以外的浏览器中,如果解析失败,方法 parseFromString() 不会抛出任何异常,只会返回一个包含了错误信息的文档对象,如下所示:

(error description)
(a snippet of the source XML)

基于此次下面就用了几个判断条件检验是否解析成功

if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {            jQuery.error( "Invalid XML: " + data );}

1.xml转换为false  比如ie9解析失败是

2.xml.documentElement可以转换为false  针对IE低版本

3.parsererror元素存在  针对非IE

满足任意一条就会调用error方法告诉开发者XML无效,最后返回解析后的xml文档

转载于:https://www.cnblogs.com/yy-hh/p/4673450.html

你可能感兴趣的文章
cd命令
查看>>
Spark UDF变长参数的二三事儿
查看>>
python学习笔记06-列表
查看>>
linux桌面与命令行模式切换 ②
查看>>
linux中KS详解
查看>>
正则 表达式
查看>>
TCP/IP基础
查看>>
使用Eclipse远程调试Tomcat
查看>>
ansible安装与部署
查看>>
python-M2Crypto安装方法
查看>>
手机写host 工具
查看>>
Android:time&date、TimePicker、DatePicker
查看>>
初始化weblogic密码
查看>>
Linux Top 命令解析
查看>>
一个C#项目 在引用References中有个引用项上有个黄色三角加感叹号 导致报错
查看>>
PPT无法修改默认打开程序的问题
查看>>
2011年度IT博客大赛50强之 jimmy_lixw
查看>>
WP8开发日志(2):MVC设计模式入门
查看>>
windows下配置Nginx1.0.9+php5.2.17
查看>>
咳咳,关于本空间的问题~
查看>>