`
Tecna
  • 浏览: 37877 次
社区版块
存档分类
最新评论

XML的操作

 
阅读更多

首先是判定浏览器的类型和版本的js:

var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);

function compareVersions(sVersion1, sVersion2) {

   
var arrVersion1 = sVersion1.split(".");
   
var arrVersion2 = sVersion2.split(".");
   
   
if (arrVersion1.length > arrVersion2.length) {
       
for (var i=0; i < arrVersion1.length - arrVersion2.length; i++) {
            arrVersion2.push(
"0");
        }
    }
else if (arrVersion1.length < arrVersion2.length) {
       
for (var i=0; i < arrVersion2.length - arrVersion1.length; i++) {
            arrVersion1.push(
"0");
        }   
    }
   
   
for (var i=0; i < arrVersion1.length; i++) {

       
if (arrVersion1[i] < arrVersion2[i]) {
           
return -1;
        }
else if (arrVersion1[i] > arrVersion2[i]) {
           
return 1;
        }   
    }
   
   
return 0;

}

var isOpera = sUserAgent.indexOf("Opera") > -1;
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false;

if (isOpera) {
   
var fOperaVersion;
   
if(navigator.appName == "Opera") {
        fOperaVersion
= fAppVersion;
    }
else {
       
var reOperaVersion = new RegExp("Opera (\\d+\\.\\d+)");
        reOperaVersion.test(sUserAgent);
        fOperaVersion
= parseFloat(RegExp["$1"]);
    }

    isMinOpera4
= fOperaVersion >= 4;
    isMinOpera5
= fOperaVersion >= 5;
    isMinOpera6
= fOperaVersion >= 6;
    isMinOpera7
= fOperaVersion >= 7;
    isMinOpera7_5
= fOperaVersion >= 7.5;
}

var isKHTML = sUserAgent.indexOf("KHTML") > -1
             
|| sUserAgent.indexOf("Konqueror") > -1
             
|| sUserAgent.indexOf("AppleWebKit") > -1;
             
var isMinSafari1 = isMinSafari1_2 = false;
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false;

if (isKHTML) {
    isSafari
= sUserAgent.indexOf("AppleWebKit") > -1;
    isKonq
= sUserAgent.indexOf("Konqueror") > -1;

   
if (isSafari) {
       
var reAppleWebKit = new RegExp("AppleWebKit\\/(\\d+(?:\\.\\d*)?)");
        reAppleWebKit.test(sUserAgent);
       
var fAppleWebKitVersion = parseFloat(RegExp["$1"]);

        isMinSafari1
= fAppleWebKitVersion >= 85;
        isMinSafari1_2
= fAppleWebKitVersion >= 124;
    }
else if (isKonq) {

       
var reKonq = new RegExp("Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)");
        reKonq.test(sUserAgent);
        isMinKonq2_2
= compareVersions(RegExp["$1"], "2.2") >= 0;
        isMinKonq3
= compareVersions(RegExp["$1"], "3.0") >= 0;
        isMinKonq3_1
= compareVersions(RegExp["$1"], "3.1") >= 0;
        isMinKonq3_2
= compareVersions(RegExp["$1"], "3.2") >= 0;
    }
   
}

var isIE = sUserAgent.indexOf("compatible") > -1
          
&& sUserAgent.indexOf("MSIE") > -1
          
&& !isOpera;
          
var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = false;

if (isIE) {
   
var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
    reIE.test(sUserAgent);
   
var fIEVersion = parseFloat(RegExp["$1"]);

    isMinIE4
= fIEVersion >= 4;
    isMinIE5
= fIEVersion >= 5;
    isMinIE5_5
= fIEVersion >= 5.5;
    isMinIE6
= fIEVersion >= 6.0;
}

var isMoz = sUserAgent.indexOf("Gecko") > -1
           
&& !isKHTML;
           
var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = false;

if (isMoz) {
   
var reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
    reMoz.test(sUserAgent);
    isMinMoz1
= compareVersions(RegExp["$1"], "1.0") >= 0;
    isMinMoz1_4
= compareVersions(RegExp["$1"], "1.4") >= 0;
    isMinMoz1_5
= compareVersions(RegExp["$1"], "1.5") >= 0;
}

var isNS4 = !isIE && !isOpera && !isMoz && !isKHTML
           
&& (sUserAgent.indexOf("Mozilla") == 0)
           
&& (navigator.appName == "Netscape")
           
&& (fAppVersion >= 4.0 && fAppVersion < 5.0);

var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false;

if (isNS4) {
    isMinNS4
= true;
    isMinNS4_5
= fAppVersion >= 4.5;
    isMinNS4_7
= fAppVersion >= 4.7;
    isMinNS4_8
= fAppVersion >= 4.8;
}

var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows");
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC")
           
|| (navigator.platform == "Macintosh");

var isUnix = (navigator.platform == "X11") && !isWin && !isMac;

var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = false;
var isMac68K = isMacPPC = false;
var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false;

if (isWin) {
    isWin95
= sUserAgent.indexOf("Win95") > -1
             
|| sUserAgent.indexOf("Windows 95") > -1;
    isWin98
= sUserAgent.indexOf("Win98") > -1
             
|| sUserAgent.indexOf("Windows 98") > -1;
    isWinME
= sUserAgent.indexOf("Win 9x 4.90") > -1
             
|| sUserAgent.indexOf("Windows ME") > -1;
    isWin2K
= sUserAgent.indexOf("Windows NT 5.0") > -1
             
|| sUserAgent.indexOf("Windows 2000") > -1;
    isWinXP
= sUserAgent.indexOf("Windows NT 5.1") > -1
             
|| sUserAgent.indexOf("Windows XP") > -1;
    isWinNT4
= sUserAgent.indexOf("WinNT") > -1
             
|| sUserAgent.indexOf("Windows NT") > -1
             
|| sUserAgent.indexOf("WinNT4.0") > -1
             
|| sUserAgent.indexOf("Windows NT 4.0") > -1
             
&& (!isWinME && !isWin2K && !isWinXP);
}

if (isMac) {
    isMac68K
= sUserAgent.indexOf("Mac_68000") > -1
              
|| sUserAgent.indexOf("68K") > -1;
    isMacPPC
= sUserAgent.indexOf("Mac_PowerPC") > -1
              
|| sUserAgent.indexOf("PPC") > -1
}

if (isUnix) {
    isSunOS
= sUserAgent.indexOf("SunOS") > -1;

   
if (isSunOS) {
       
var reSunOS = new RegExp("SunOS (\\d+\\.\\d+(?:\\.\\d+)?)");
        reSunOS.test(sUserAgent);
        isMinSunOS4
= compareVersions(RegExp["$1"], "4.0") >= 0;
        isMinSunOS5
= compareVersions(RegExp["$1"], "5.0") >= 0;
        isMinSunOS5_5
= compareVersions(RegExp["$1"], "5.5") >= 0;
    }
}

然后是实现跨浏览器加载XML文件的js

function XmlDom() {
   
if (window.ActiveXObject) {
       
var arrSignatures = ["MSXML2.DOMDocument.5.0", "MSXML2.DOMDocument.4.0",
                            
"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
                            
"Microsoft.XmlDom"];
                        
       
for (var i=0; i < arrSignatures.length; i++) {
           
try {
       
               
var oXmlDom = new ActiveXObject(arrSignatures[i]);
           
               
return oXmlDom;
       
            }
catch (oError) {
               
//ignore
            }
        }         

       
throw new Error("MSXML is not installed on your system.");
             
    }
else if (document.implementation && document.implementation.createDocument) {
       
       
var oXmlDom = document.implementation.createDocument("","",null);

        oXmlDom.parseError
= {
            valueOf:
function () { return this.errorCode; },
            toString:
function () { return this.errorCode.toString() }
        };
       
        oXmlDom.__initError__();
               
        oXmlDom.addEventListener(
"load", function () {
           
this.__checkForErrors__();
           
this.__changeReadyState__(4);
        },
false);

       
return oXmlDom;       
       
    }
else {
       
throw new Error("Your browser doesn't support an XML DOM object.");
    }
}

if (isMoz) {

    Document.prototype.readyState
= 0;
    Document.prototype.onreadystatechange
= null;

    Document.prototype.__changeReadyState__
= function (iReadyState) {
       
//this.readyState = iReadyState;

       
if (typeof this.onreadystatechange == "function") {
           
this.onreadystatechange();
        }
    };

    Document.prototype.__initError__
= function () {
       
this.parseError.errorCode = 0;
       
this.parseError.filepos = -1;
       
this.parseError.line = -1;
       
this.parseError.linepos = -1;
       
this.parseError.reason = null;
       
this.parseError.srcText = null;
       
this.parseError.url = null;
    };
   
    Document.prototype.__checkForErrors__
= function () {

       
if (this.documentElement.tagName == "parsererror") {

           
var reError = />([\s\S]*?)Location:([\s\S]*?)Line Number (\d+), Column (\d+):<sourcetext>([\s\S]*?)(?:\-*\^)/;

            reError.test(
this.xml);
           
           
this.parseError.errorCode = -999999;
           
this.parseError.reason = RegExp.$1;
           
this.parseError.url = RegExp.$2;
           
this.parseError.line = parseInt(RegExp.$3);
           
this.parseError.linepos = parseInt(RegExp.$4);
           
this.parseError.srcText = RegExp.$5;
        }
    };
   
       
    Document.prototype.loadXML
= function (sXml) {
   
       
this.__initError__();
   
       
this.__changeReadyState__(1);
   
       
var oParser = new DOMParser();
       
var oXmlDom = oParser.parseFromString(sXml, "text/xml");

       
while (this.firstChild) {
           
this.removeChild(this.firstChild);
        }

       
for (var i=0; i < oXmlDom.childNodes.length; i++) {
           
var oNewNode = this.importNode(oXmlDom.childNodes[i], true);
           
this.appendChild(oNewNode);
        }
       
       
this.__checkForErrors__();
       
       
this.__changeReadyState__(4);

    };
   
    Document.prototype.__load__
= Document.prototype.load;

    Document.prototype.load
= function (sURL) {
       
this.__initError__();
       
this.__changeReadyState__(1);
       
this.__load__(sURL);
    };
   
    Node.prototype.__defineGetter__(
"xml", function () {
       
var oSerializer = new XMLSerializer();
       
return oSerializer.serializeToString(this, "text/xml");
    });

}

然后是xml的操作js

/**
* @author Administrator
*/
function XMLOperater(a){
   
var xDoc = new XmlDom();
    xDoc.async
= false;
   
var b = xDoc.load(a);
   
if(!b){
       
return;
    }
   
var p = getChildNodeByTagName(xDoc,"root的名字");
   
if(!p){
       
return;
    }
   
this.attr= getAttribute(p,"root的属性");
    n
= getChildNodeByTagName(p,"root下的节点");
   
if(n){
       
this.gridsize = getAttribute(n,"root下节点的属性");
    }
分享到:
评论

相关推荐

    xml操作xml操作xml操作xml操作xml操作

    xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作xml操作

    XML操作类XML操作类XML操作类

    XML操作类XML操作类XML操作类XML操作类XML操作类XML操作类XML操作类XML操作类

    基于QT封装的XML操作,显示类

    基于QT的QDomDocument封装的XML操作,显示类。使在QT中操作XML比较方便,快捷。如果觉得那里封装的不好,欢迎提出宝贵意见,建议,我再改正。

    动态生成Rss文件 Xml操作 Xml文件的修改

    动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...

    c++的xml操作类

    tinyxml,很好用的xml操作类,c++版,删除了乱七八糟的工程文件,用时include一下两个头文件即可。具体使用方法参考:http://blog.csdn.net/zhangrentian/archive/2010/01/15/5194875.aspx

    XML操作类(完整)

    XML操作类(完整)使用于C#领域,更好的操作XML文件

    c# 下xml操作类

    c#下操作xml文件类,方便调用操作。 xml操作日趋常见,xml格式相对规范,通过xml存储信息更加方法,采用该类可以方便操作。

    简单实用的XML操作类

    简单实用的XML操作通用类,实现的功能包括创建XML文档、增加节点、删除节点和读取节点的值等。

    C# XML操作类库(加强版)

    最近做项目,要用C#写,而且数据格式是那种节点套节点能把人套死的XML,看着都觉得晕,而且节点跳跃性很大,真心觉得单纯用环境自带的XMLDocument类完全达不到自己的需要,因为XML里面涉及到节点循环,循环里面又套...

    java对xml操作的项目案例

    java对xml操作,包括各种读写,java对xml操作的项目案例

    Xml操作类(C#)

    Xml操作类,项目中使用的,包含读取数据、插入数据、修改数据、删除数据 附带使用方法。

    xml操作,内含源码

    初学者学习使用的xml操作,例子简单,容易上手

    xml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百味www.bywei.cn

    xml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百味www.bywei.cnxml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百味www.bywei.cnxml教程(增删改)xml教程 xml xml操作教程 xml读取-程序员百...

    xml操作类,xml操作类

    xml的所有操作.xml的所有操作.xml的所有操作.xml的所有操作.

    xml操作C#源码

    该代码主要实现了根据xml中定义的扩展字段Expand动态生成textbox,填写后更新xml的一个源码,包括xml的增删改查功能。算是比较全的一个xml操作源码了。主要是为了公司项目做的可行性研究,欢迎交流分享。

    asp.net 用xml操作word asp.net 用xml操作word

    asp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用xml操作wordasp.net 用...

    XML操作类 增删改查节点操作

    对xml操作的整理,包括增、删、改 、查方法操作

    vb6中xml 操作模块 完整代码.

    包含了常用的xml操作.并有详细说明.不需要在写任何代码.包含了xml的常用操作.代码中使用了xml4.0的库.需要自己手动添加.

    基于tinyxml2的xml操作库再封装

    对tinyxml2再封装,使使用更加便捷,方便。*******************************

    XMLHelper xml操作类 c#

    c# XMLHelper xml操作类

Global site tag (gtag.js) - Google Analytics