/******************************************************************************
说明: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浏览器兼容性处理的更多相关文章

  1. js 解析XML 在Edge浏览器下面 无法准确读到节点属性值

    js 解析XML 在Edge浏览器下面 无法准确读到节点属性值 Dom.documentElement.childNodes[j].attributes[2]  这个是大众写法 在win10的edge ...

  2. JS解析XML文件和XML字符串

    JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...

  3. CSS控制XML与通过js解析xml然后通过html显示xml中的数据

    使用CSS控制XML的显示 book.css bookname{ display:block;color:Red} author{ display:block;font-style:italic} p ...

  4. js解析xml,获取XMl标签属性值

    <script type="text/javascript"> var xml="<?xml version=\"1.0\" enc ...

  5. node.js 解析xml BOM问题(xmlreader sax.js)

    Email:longsu2010 at yeah dot net 之前写了两篇文章关于node.js解析xml,说的是xmlreader,文章如下 node.js解析xml(xmlreader) no ...

  6. 用js解析XML文件,字符串一些心得

    解析XML文件遇到的问题 今天秦博士叫我解析一下XML文件,将里面的所有的X坐标Y坐标放在一个数组里面然后写在文档里让他进行算法比对,大家都知道了啦,解析XML文件获取里面的坐标数据什么的,当然是用前 ...

  7. JS 解析Xml

    loadXML = function (xmlString) { var xmlDoc = null; //判断浏览器的类型 //支持IE浏览器 if (!window.DOMParser & ...

  8. tab.js分享及浏览器兼容性问题汇总

    在 样式布局分享-基于frozen.js的移动OA 文章中,用了到第三方组件 tab.js(带菜单的横屏滑动插件),其兼容性很差,进行优化后,已兼容全平台(且支持IE6+). tab.js GitHu ...

  9. js解析XML

    //在当前页面内追加换行标签和指定的HTML内容function w( html ){    $(document.body).append("<br/>" + htm ...

随机推荐

  1. mysql left join 几个意思

    left join 用于多表  >1个表比如select a.*,b.* from ta as a left join tb as b on a.aid=b.bid咱们就以实际的代码来查看一下. ...

  2. linux添加新硬盘并格式化

    1.查看当前系统硬盘及分区情况 (注:Linux中SCSI的第1个硬盘/dev/sda,第2个硬盘/dev/sdb依此类推) 2. 初始化分区sdb为物理卷pv pvcreate /dev/sdb   ...

  3. scapy安装及SCTP包分析

    关于Scapy scapy是一个强大的交互式数据包处理程序(使用python编写).它能够伪造或者解码大量的网络协议数据包,能够发送.捕捉.匹配请求和回复包等.它可以很容易地处理一些典型操作,比如端口 ...

  4. post 与get 区别

    刷新/后退按钮 GET后退按钮/刷新无害,POST数据会被重新提交(浏览器应该告知用户数据会被重新提交). 书签 GET书签可收藏,POST为书签不可收藏. 缓存 GET能被缓存 缓存是针对URL来进 ...

  5. oracle概念

    .DDL 数据定义语言 create alter drop truncate .DML 数据操作语言 insert delete update select .TCL 事务控制语言 commit ro ...

  6. 关于 AspNet Core 的配置文件 与VS2017 安装

    下面链接 是VS2017 安装EXE 我现在装过了就不去截图演示了,有哪位不理解的可以@我. 链接:https://pan.baidu.com/s/1hsjGuJq 密码:ug59 1.今天我给大家带 ...

  7. JavaScript中对日期格式化的新想法.

    其实我们对与日期的显示,也就那么几种,不需要每次都传格式化字符串. 只要告诉函数你想要什么结果就好了,以下是在ios的JavaScript中我新写的日期格式化函数: /** 格式化日期 @param ...

  8. 一、OpenStack入门 之 初步认识

    OpenStack入门 之 初步认识 写在前面 从 OpenStack 基础知识開始学起,剖析 OpenStack 架构.分析 OpenStack 的各个组件的功能.原理和用法,通过实战演练来掌握 O ...

  9. OD调试程序经常使用断点大全

    经常使用断点  拦截窗体:  bp CreateWindow 创建窗体  bp CreateWindowEx(A) 创建窗体  bp ShowWindow 显示窗体  bp UpdateWindow ...

  10. Oracle集合操作

    在Oracle中提供了三种类型的集合操作: 并(UNION).交(INTERSECT).差(MINUS) UNION:将多个查询的结果组合到一个查询结果之中,并去掉反复值 UNION ALL:将多个查 ...