兼容Firefox的Javascript XSLT 处理XML文件


Posted in Javascript onDecember 31, 2014

最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器。而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX来做的。

    无奈中,自己写了一个Javascript XSLT处理XML展现页面的小功能。现在帖出来和大家共享,希望大家给点改进意见。
    在Firefox中使用XSLTProcessor对象处理XML,主要使用该对象的两个方法:
一、transformToFragment()。

二、transformToDocument()。

    下面的代码仅仅使用transformToFragment()方法来实现对XML文件处理,如果你对在Firefox中使用Javascript XSLT 处理XML文件感兴趣的话不妨试着将以下代码改写成使用transformToDocument()方法来实现的处理功能。
Javascript 代码如下:
 

function initialize() {

    var xmlDoc;

    var xslDoc;
    // 判断浏览器的类型

    if(document.implementation && document.implementation.createDocument)

    {        

        // 支持Mozilla浏览器

        try

        {

            xmlDoc = document.implementation.createDocument("", "", null);    

            xmlDoc.async = false;

            xmlDoc.load("guestbook/guestbook.xml");

        }

        catch(e)

        {

            alert("error:001");

        }

        try

        {

            xslDoc = document.implementation.createDocument("", "", null);

            xslDoc.async = false;     

              xslDoc.load("guestbook/guestbook.xsl");

              

          }

          catch(e)

          {

              alert("error:002");

          }

          try

          {

              // 定义XSLTProcessor对象    

            var xsltProcessor = new XSLTProcessor();

            xsltProcessor.importStylesheet(xslDoc);

            var oResultFragment = xsltProcessor.transformToFragment(xmlDoc,document);

            // 将解析过的文本输出到页面

            var oDiv = document.getElementById("guestbookPanel");

            oDiv.appendChild(oResultFragment);

        }

        catch(e)

        {

            alert("error:003");

        }    

    }

    else if(typeof window.ActiveXObject != 'undefined')

    {        

        //var xmlDoc=Server.CreateObject("Msxml2.DOMDocument.4.0");        

        // 支持IE浏览器

        xmlDoc = new ActiveXObject('Microsoft.XMLDOM');

        xslDoc = new ActiveXObject('Microsoft.XMLDOM'); 

        xmlDoc.async = false;

        xslDoc.async = false;     

        xmlDoc.load("guestbook/guestbook.xml");

          xslDoc.load("guestbook/guestbook.xsl");

        guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);    

    }

    else

    {

        alert("Browser unknown!");

    }

}

javascript dom 处理XSL显示数据的第二种方式。

主要代码如下:

var xmlDoc;

 var xslDoc;

 // 判断浏览器的类型

 if(document.implementation && document.implementation.createDocument)

 {  

  // 支持Mozilla浏览器

  try

  {

   xmlDoc = document.implementation.createDocument("", "", null); 

   xmlDoc.async = false;

   xmlDoc.load("guestbook/guestbook.xml");

   xslDoc = document.implementation.createDocument("", "", null);

   xslDoc.async = false;  

     xslDoc.load("guestbook/guestbook.xsl");     

     // 定义XSLTProcessor对象 

   var xsltProcessor = new XSLTProcessor();

   xsltProcessor.importStylesheet(xslDoc);

    // transformToDocument方式

    var result = xsltProcessor.transformToDocument(xmlDoc);

    var xmls = new XMLSerializer();

    document.getElementById("guestbookPanel").innerHTML = xmls.serializeToString(result);

  }

  catch(e)

  {

   alert("Unable to do xml/xsl processing");

  } 

 }

 else if(typeof window.ActiveXObject != 'undefined')

 {

  try

  {

   // 支持IE浏览器

   xmlDoc = new ActiveXObject('Msxml2.DOMDocument');

   xslDoc = new ActiveXObject('Msxml2.DOMDocument'); 

   xmlDoc.async = false;

   xslDoc.async = false;  

   xmlDoc.load("guestbook/guestbook.xml");

     xslDoc.load("guestbook/guestbook.xsl");

   guestbookPanel.innerHTML = xmlDoc.documentElement.transformNode(xslDoc);

  }

  catch(e)

  {

   alert("Unable to do xml/xsl processing");

  }

 }

 else

 {

  alert("Browser unknown!");

 }
Javascript 相关文章推荐
jQuery 使用手册(七)
Sep 23 Javascript
javascript instanceof,typeof的区别
Mar 24 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
Jul 10 Javascript
javascript中的Function.prototye.bind
Jun 25 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
JS实现页面载入时随机显示图片效果
Sep 07 Javascript
微信小程序图片左右摆动效果详解
Jul 13 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
Oct 26 Javascript
处理JavaScript值为undefined的7个小技巧
Jul 28 Javascript
详解如何在Canvas中添加事件的方法
Apr 17 Javascript
使用jquery+CSS实现控制打印样式
Dec 31 #Javascript
浅谈javascript中字符串String与数组Array
Dec 31 #Javascript
jQuery中[attribute!=value]选择器用法实例
Dec 31 #Javascript
JavaScript中的Primitive对象封装介绍
Dec 31 #Javascript
JavaScript中的值类型转换介绍
Dec 31 #Javascript
javascript实现滑动解锁功能
Dec 31 #Javascript
JavaScript中number转换成string介绍
Dec 31 #Javascript
You might like
PHP文本数据库的搜索方法
2006/10/09 PHP
PHP常用函数小技巧
2008/09/11 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
PDO::inTransaction讲解
2019/01/28 PHP
PHP 实现缩略图
2021/03/09 PHP
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
Mongoose中document与object的区别示例详解
2017/09/18 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
js实现简易计算器小功能
2020/11/18 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
python3调用R的示例代码
2018/02/23 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
HR喜欢的自荐信格式
2013/10/08 职场文书
大学学习个人的自我评价
2014/02/18 职场文书
初一新生军训方案
2014/05/22 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
合作合同协议书
2016/03/21 职场文书
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers