js解析xml浏览器兼容性处理
/******************************************************************************
说明:xml解析类
******************************************************************************/ function XMLDOCDocument() {
this.xmlDoc = null;
this.async = false;
this.xml = null;
}; function createDocument() {
if (typeof arguments.callee.activeXString != "string") {
var versions = ["MSXML2.DOMDocument.6.0", "MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument"],
i, len;
for (i = 0, len = versions.length; i < len; i++) {
try {
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
ActiveXObject(arguments.callee.activeXString);
break;
} catch (ex) {
//跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
};
/*
描述:加载xml
*/
XMLDOCDocument.prototype.loadXML = function (xmlInfo) {
//判断浏览器的类型
//支持IE浏览器 var isLoad = false;
var xmlDomVersions = ['MSXML.2.DOMDocument.6.0', 'MSXML.2.DOMDocument.3.0', 'Microsoft.XMLDOM'];
for (var i = 0; i < xmlDomVersions.length; i++) {
try {
this.xmlDoc = new ActiveXObject(xmlDomVersions[i]);
this.xmlDoc.async = this.async;
this.xmlDoc.loadXML(xmlInfo); //loadXML方法载入xml字符串
this.xml = this.xmlDoc.documentElement.outerHTML;
isLoad = true;
break;
} catch (e) {
}
}
if (!isLoad) {
if (typeof DOMParser != "undefined") {
this.xmlDoc = (new DOMParser()).parseFromString(xmlInfo, "text/xml");
this.xml = this.xmlDoc.documentElement.outerHTML;
var errors = this.xmlDoc.getElementsByTagName("parsererror");
if (errors.length) {
throw new Error("XML parsing error:" + errors[0].textContent);
}
} else {
throw new Error("No XML parser available.");
}
}
}; /*
说明:选择所有符合条件的节点
*/
XMLDOCDocument.prototype.selectNodes = function (xPath) {
return this.xmlDoc.selectNodes(xPath);
};
/*
说明:选择一个符合条件的节点
*/
XMLDOCDocument.prototype.selectSingleNode = function (xPath) {
return this.xmlDoc.selectSingleNode(xPath);
}; /*
说明:创建新节点
*/
XMLDOCDocument.prototype.createElement = function (nodeName) {
return this.xmlDoc.createElement(nodeName);
}; /*
说明:创建新属性
*/
XMLDOCDocument.prototype.createAttribute = function (attrName) {
return this.xmlDoc.createAttribute(attrName);
};
/*
说明:获得xml字符串
*/
XMLDOCDocument.prototype.getXml = function () {
//return this.xmlDoc.xml;
if (typeof this.xmlDoc.xml != "undefined") { return this.xmlDoc.xml;
}
else if (typeof XMLSerializer != "undefined") {
return (new XMLSerializer()).serializeToString(this.xmlDoc);
} else {
throw new Error("Could not serialize XML DOM.");
}
};
/*
说明:获得xml字符串
*/
XMLDOCDocument.prototype.toString = function () {
//return this.xmlDoc.xml;
if (typeof this.xmlDoc.xml != "undefined") { return this.xmlDoc.xml;
}
else if (typeof XMLSerializer != "undefined") {
return (new XMLSerializer()).serializeToString(this.xmlDoc);
} else {
throw new Error("Could not serialize XML DOM.");
}
}; // check for XPath implementation
if (document.implementation.hasFeature("XPath", "3.0")) {
// prototying the XMLDocument
XMLDocument.prototype.selectNodes = function (cXPathString, xNode) {
if (!xNode) {
xNode = this;
}
var oNSResolver = this.createNSResolver(this.documentElement)
var aItems = this.evaluate(cXPathString, xNode, oNSResolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)
var aResult = [];
for (var i = 0; i < aItems.snapshotLength; i++) {
aResult[i] = aItems.snapshotItem(i);
}
return aResult;
}; // prototying the Element
Element.prototype.selectNodes = function (cXPathString) {
if (this.ownerDocument.selectNodes) {
return this.ownerDocument.selectNodes(cXPathString, this);
}
else {
throw "For XML Elements Only";
}
}; // prototying the XMLDocument
XMLDocument.prototype.selectSingleNode = function (cXPathString, xNode) {
if (!xNode) { xNode = this; }
var xItems = this.selectNodes(cXPathString, xNode);
if (xItems.length > 0) {
return xItems[0];
}
else {
return null;
}
}; // prototying the Element
Element.prototype.selectSingleNode = function (cXPathString) {
if (this.ownerDocument.selectSingleNode) {
return this.ownerDocument.selectSingleNode(cXPathString, this);
}
else { throw "For XML Elements Only"; }
} Element.prototype.__defineGetter__("innerText",
function () {
return this.textContent;
}
); Element.prototype.__defineSetter__("innerText",
function (sText) {
this.textContent = sText;
}
); };
js解析xml浏览器兼容性处理的更多相关文章
- js 解析XML 在Edge浏览器下面 无法准确读到节点属性值
js 解析XML 在Edge浏览器下面 无法准确读到节点属性值 Dom.documentElement.childNodes[j].attributes[2] 这个是大众写法 在win10的edge ...
- JS解析XML文件和XML字符串
JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...
- CSS控制XML与通过js解析xml然后通过html显示xml中的数据
使用CSS控制XML的显示 book.css bookname{ display:block;color:Red} author{ display:block;font-style:italic} p ...
- js解析xml,获取XMl标签属性值
<script type="text/javascript"> var xml="<?xml version=\"1.0\" enc ...
- node.js 解析xml BOM问题(xmlreader sax.js)
Email:longsu2010 at yeah dot net 之前写了两篇文章关于node.js解析xml,说的是xmlreader,文章如下 node.js解析xml(xmlreader) no ...
- 用js解析XML文件,字符串一些心得
解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有的X坐标Y坐标放在一个数组里面然后写在文档里让他进行算法比对,大家都知道了啦,解析XML文件获取里面的坐标数据什么的,当然是用前 ...
- JS 解析Xml
loadXML = function (xmlString) { var xmlDoc = null; //判断浏览器的类型 //支持IE浏览器 if (!window.DOMParser & ...
- tab.js分享及浏览器兼容性问题汇总
在 样式布局分享-基于frozen.js的移动OA 文章中,用了到第三方组件 tab.js(带菜单的横屏滑动插件),其兼容性很差,进行优化后,已兼容全平台(且支持IE6+). tab.js GitHu ...
- js解析XML
//在当前页面内追加换行标签和指定的HTML内容function w( html ){ $(document.body).append("<br/>" + htm ...
随机推荐
- mysql left join 几个意思
left join 用于多表 >1个表比如select a.*,b.* from ta as a left join tb as b on a.aid=b.bid咱们就以实际的代码来查看一下. ...
- linux添加新硬盘并格式化
1.查看当前系统硬盘及分区情况 (注:Linux中SCSI的第1个硬盘/dev/sda,第2个硬盘/dev/sdb依此类推) 2. 初始化分区sdb为物理卷pv pvcreate /dev/sdb ...
- scapy安装及SCTP包分析
关于Scapy scapy是一个强大的交互式数据包处理程序(使用python编写).它能够伪造或者解码大量的网络协议数据包,能够发送.捕捉.匹配请求和回复包等.它可以很容易地处理一些典型操作,比如端口 ...
- post 与get 区别
刷新/后退按钮 GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交). 书签 GET书签可收藏,POST为书签不可收藏. 缓存 GET能被缓存 缓存是针对URL来进 ...
- oracle概念
.DDL 数据定义语言 create alter drop truncate .DML 数据操作语言 insert delete update select .TCL 事务控制语言 commit ro ...
- 关于 AspNet Core 的配置文件 与VS2017 安装
下面链接 是VS2017 安装EXE 我现在装过了就不去截图演示了,有哪位不理解的可以@我. 链接:https://pan.baidu.com/s/1hsjGuJq 密码:ug59 1.今天我给大家带 ...
- JavaScript中对日期格式化的新想法.
其实我们对与日期的显示,也就那么几种,不需要每次都传格式化字符串. 只要告诉函数你想要什么结果就好了,以下是在ios的JavaScript中我新写的日期格式化函数: /** 格式化日期 @param ...
- 一、OpenStack入门 之 初步认识
OpenStack入门 之 初步认识 写在前面 从 OpenStack 基础知识開始学起,剖析 OpenStack 架构.分析 OpenStack 的各个组件的功能.原理和用法,通过实战演练来掌握 O ...
- OD调试程序经常使用断点大全
经常使用断点 拦截窗体: bp CreateWindow 创建窗体 bp CreateWindowEx(A) 创建窗体 bp ShowWindow 显示窗体 bp UpdateWindow ...
- Oracle集合操作
在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:将多个查询的结果组合到一个查询结果之中,并去掉反复值 UNION ALL:将多个查 ...